繁体   English   中英

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

[英]Using VB interfaces, enums, etc in C# code

我有一个包含多个项目的解决方案,有些项目是用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;
        }
    }
}

PS这是一个控制台/服务应用程序,而不是ASP.Net(我知道它是可行的)。

UPD :对不起,伙计们,缺少对该项目的参考。 现在已经修好了。 我认为在VB项目中所做的引用与在C#中所做的稍有不同,这让我感到困惑。

如果将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

在编译代码时,这一切都归结为同样的事情,所以答案是(大多数情况下)是 - 你可以使用C#编译的VB.NET库,反之亦然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM