winforms 是否可以将C# 8.0与.Net 3.5一起使用

vwkv1x7d  于 2022-12-14  发布在  C#
关注(0)|答案(1)|浏览(190)

我正在创建面向.NET3.5的Winform应用程序。我已经在项目文件中启用了C#8.0。
我使用c# 8.0的主要原因是使用delegate void OnSomeEvent(object obj, string name);,而在c# 7.3中我不能使用它。

这个接口是由运行时未知的类使用的。我想用这个接口来搜索这些类,并使用inf反射来转换这些类,然后订阅它们继承的事件。
那么,是否可以将C# 8.0与.NET 3.5一起使用呢?

pkln4tw6

pkln4tw61#

较新版本的C#语言中的某些功能需要在执行阶段有特定类别存在。当您使用这些功能时,应用程序将不会在链接期间或执行阶段编译或失败。
例如,元组需要存在ValueTuple<>类。
关于具体问题:根据The history of C#
预设界面成员需要CLR中的增强功能。
因此,您将无法在.net Framework 3.5版中使用默认接口方法。
然而,在你的例子中,你只有一个委托声明。你不需要把委托声明放在接口里面。你可以把它放在接口声明的前面或后面,因为委托可以直接在命名空间里面声明。
事件本身可以在界面内宣告,即使在C#的旧版中也是如此。

delegate void OnSomeEvent(object obj, string name);

public interface IUpdate
{
    event OnSomeEvent SomeEvent;
}

相关问题