我有一个包含多个项目的解决方案,其中一些项目是用VB编写的,一些是用C#编写的。我想知道是否有办法在C#类中使用VB编写的接口和/或枚举?下面的我的C#代码无法编译,但是我能够在intellisense中看到该接口。
VB代码:
Namespace A
Public Inteface IHandler
Function Handle() As HandlerResult
End Interface
Public Enum HandlerResult
Success = 1
Fail = 0
End Enum
End Namespace
C#代码:
using A;
namespace B
{
public class MyHandler : IHandler
{
public HandlerResult Handle(){
return HandlerResult.Success;
}
}
}
P.S这是一个控制台/服务应用程序,而不是ASP.Net(我知道它是可行的)。
UPD :对不起,伙计们错过了对该项目的参考。现在已经修好了。我认为VB项目引用的内容与C#中的内容略有不同,让我感到困惑。
答案 0 :(得分:3)
如果将C#代码放在与VB代码不同的程序集中,这将起作用。为了避免循环依赖,您可能必须将所有现有VB代码移动到DLL程序集中。这样,您可以从新的C#程序集引用VB.Net程序集,并引用主exe程序集中的两个程序集。
请注意,如果执行此操作,从C#查看时命名空间不会只是“A”,它将嵌套在VBProject的默认命名空间下,例如
using StackOverflow7843509.A;
namespace B
{
public class MyHandler : IHandler
{
public HandlerResult Handle()
{
return HandlerResult.Success;
}
}
}
在此示例中,我创建的VB项目的默认命名空间是StackOverflow7843509
答案 1 :(得分:0)
编译代码时,这一切都归结为同样的事情,所以答案是(大多数情况下)是 - 你可以使用C#编译的VB.NET库,反之亦然。