我正在创建面向.NET3.5的Winform应用程序。我已经在项目文件中启用了C#8.0。我使用c# 8.0的主要原因是使用delegate void OnSomeEvent(object obj, string name);,而在c# 7.3中我不能使用它。
delegate void OnSomeEvent(object obj, string name);
这个接口是由运行时未知的类使用的。我想用这个接口来搜索这些类,并使用inf反射来转换这些类,然后订阅它们继承的事件。那么,是否可以将C# 8.0与.NET 3.5一起使用呢?
pkln4tw61#
较新版本的C#语言中的某些功能需要在执行阶段有特定类别存在。当您使用这些功能时,应用程序将不会在链接期间或执行阶段编译或失败。例如,元组需要存在ValueTuple<>类。关于具体问题:根据The history of C#预设界面成员需要CLR中的增强功能。因此,您将无法在.net Framework 3.5版中使用默认接口方法。然而,在你的例子中,你只有一个委托声明。你不需要把委托声明放在接口里面。你可以把它放在接口声明的前面或后面,因为委托可以直接在命名空间里面声明。事件本身可以在界面内宣告,即使在C#的旧版中也是如此。
ValueTuple<>
delegate void OnSomeEvent(object obj, string name); public interface IUpdate { event OnSomeEvent SomeEvent; }
1条答案
按热度按时间pkln4tw61#
较新版本的C#语言中的某些功能需要在执行阶段有特定类别存在。当您使用这些功能时,应用程序将不会在链接期间或执行阶段编译或失败。
例如,元组需要存在
ValueTuple<>
类。关于具体问题:根据The history of C#
预设界面成员需要CLR中的增强功能。
因此,您将无法在.net Framework 3.5版中使用默认接口方法。
然而,在你的例子中,你只有一个委托声明。你不需要把委托声明放在接口里面。你可以把它放在接口声明的前面或后面,因为委托可以直接在命名空间里面声明。
事件本身可以在界面内宣告,即使在C#的旧版中也是如此。