使用VB接口,枚举等c#代码

本文关键字:代码 枚举 VB 接口 使用 | 更新日期: 2023-09-27 18:11:47

我有多个项目的解决方案,一些项目是用VB编写的,一些是用c#编写的。我想知道是否有一种方法可以在c#类中使用VB编写的接口和/或枚举?我下面的c#代码不能编译,但是我可以看到智能感知的接口。

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。这是一个控制台/服务应用程序,不是ASP。(我知道这是可行的)。

UPD:对不起,伙计们,缺少对接口项目的引用。现在修好了。我认为VB项目中的引用与c#中的引用略有不同,这让我感到困惑。

使用VB接口,枚举等c#代码

如果您将c#代码放在与VB代码不同的程序集中,则可以工作。为了避免循环依赖,您可能必须将所有现有的VB代码移动到DLL程序集中。这样你就可以引用VB了。. Net程序集,并从主exe程序集引用这两个程序集。

注意,如果你这样做,从c#中查看的命名空间将不是简单的"A",它将嵌套在VBProject的默认命名空间下面,例如

using StackOverflow7843509.A;
namespace B
{
    public class MyHandler : IHandler
    {
        public HandlerResult Handle()
        {
            return HandlerResult.Success;
        }
    }
}

在这个例子中,我创建的VB项目的默认名称空间是StackOverflow7843509

当代码被编译时,这一切都归结为同样的事情,所以答案(大部分)是肯定的-您可以使用编译后的VB。. NET库与c#,反之亦然