在C#代码中使用VB接口,枚举等

时间:2011-10-20 23:32:30

标签: c# .net vb.net interface

我有一个包含多个项目的解决方案,其中一些项目是用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#中的内容略有不同,让我感到困惑。

2 个答案:

答案 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库,反之亦然。