将VB.net代码与c#代码混合使用

Nig*_*ker 5 .net c# vb.net

我有一个vb.net解决方案,我想在那里添加一个用c#编写的新dll文件,并在vb.net编写的代码中使用dll中的功能.

我对它进行了多次使用,似乎工作正常,但用c#搞乱vb.net代码就像我想做的那样聪明.

我正在做什么有什么危险?

非常感谢你的帮助.

Dav*_*d M 11

您的DLL不是C#DLL,它是一个.NET DLL.编译完成后,你所拥有的就是IL - 无论它来自何种语言都无关紧要.应该没问题,除非你遇到一个奇怪的边缘情况,其中DLL的接口包含Visual Basic不支持的东西.但这将是一个非常边缘的案例.

公共语言规范(CLS)定义了.NET语言必须支持的.NET功能的子集,如果您的DLL符合CLS,那么您可以毫无问题地使用它.如果你对CLS,CTS,CLR等之间的区别感到困惑,那么我发现本书的内容非常有用,尽管它主要是一本C#书.


Mar*_*rkJ 5

将您的代码标记为符合CLS,然后C#编译器会在您从另一种.Net语言调用DLL时执行任何可能导致问题的操作时发出警告.

来自MSDN的一些引用

要与其他对象完全交互而不管其实现的语言如何,对象必须仅向调用者公开那些必须与之互操作的所有语言共有的功能.出于这个原因, 已经定义了公共语言规范(CLS),它是许多应用程序所需的一组基本语言特性.

您可以使用CLSCompliantAttribute将程序集,模块,类型和成员标记为符合CLS .

某些符合CLS的语言编译器( 如C#编译器)使您能够指定您希望代码符合CLS.这些编译器可以检查CLS合规性,并在您的代码使用CLS不支持的功能时通知您.

此外,您的组织现在需要C#技能以及Vb.Net技能.您应该说服自己这样做,然后说服关键决策者.