是否可以从C#调用vb函数(同一个项目)

时间:2014-03-10 21:23:58

标签: c# asp.net asp.net-mvc vb.net

我在VS 1013中使用vb和C#创建了一个混合MVC / Webforms项目。我需要从我的C#代码中调用vb函数。目前这似乎不起作用,我无法从C#访问vb函数或类,反之亦然。

这可能吗?怎么样?

1 个答案:

答案 0 :(得分:2)

只要你留下CLS Compliant,就应该能够直接使用C#中的VB.NET程序集中声明的公共方法,反之亦然。

using System;

// Assembly marked as compliant.
[assembly: CLSCompliant(true)]

// Class marked as compliant.
[CLSCompliant(true)]
public class MyCompliantClass {
   // ChangeValue exposes UInt32, which is not in CLS.
   // A compile-time warning results.
   public void ChangeValue(UInt32 value){ }

   public static void Main( ) {
   int i = 2;
   Console.WriteLine(i);
   }
}

某些语言功能(例如,参数化属性,例如,仅在VB.NET中可用)在两种语言中都不可用,因此您必须注意这些功能。但CLS合规是一种非常保守的方法;如果你避免使用特定于语言的特性,那么你真的应该能够只编译程序集,从另一个程序引用程序集,只需在程序集中使用这些方法而不需要任何进一步的努力。

我认为你不能在同一个程序集中混合使用C#代码和VB.NET代码,因此你必须将C#代码放在一个项目中,将VB.NET代码放在另一个项目中。