在C#.net中扩展VB.net类

在C#.net中扩展VB.net类,c#,.net,vb.net,C#,.net,Vb.net,我目前正在探索将VB.net和C#.net结合到同一个解决方案中的可能性,以期停止编写VB.net代码,并随后重构已写入C#的内容。我对.net框架的理解表明,我可以使用另一种语言的类来扩展一种语言的类,但我根本找不到一种方法使它工作 作为一个模型,我创建了一个VB.Net控制台应用程序,看起来非常像这样: Namespace CrossLanguage Module Module1 Sub Main() Console.WriteLine("This is a t

我目前正在探索将VB.net和C#.net结合到同一个解决方案中的可能性,以期停止编写VB.net代码,并随后重构已写入C#的内容。我对.net框架的理解表明,我可以使用另一种语言的类来扩展一种语言的类,但我根本找不到一种方法使它工作

作为一个模型,我创建了一个VB.Net控制台应用程序,看起来非常像这样:

Namespace CrossLanguage

Module Module1

    Sub Main()

        Console.WriteLine("This is a test")
        Console.ReadLine()

        Dim x As New Test

        x.WriteMeAnAnimal()

    End Sub

End Module

Public Class Test

    Sub WriteMeAnAnimal()

        Console.WriteLine("An animal")
        Console.ReadLine()

    End Sub

End Class

End Namespace
这是可行的,没有什么真正的问题。我可以运行应用程序,在第一条阅读线上,我可以提交任何我喜欢的东西,然后出现“动物”。现在,我接下来要做的就是创建一个新的C#项目,其中包含一个类文件。我添加了一个指向VB.net项目的项目引用(这很好),但我无法让C#类看到VB类的存在:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Test;

namespace CrossLanguage
{
    public class Dog : Test
    {
    }
}
对IDE错误的引用进行测试,带有整个“找不到,你失踪了吗…”的恶作剧


我遗漏了什么吗?

不幸的是,这似乎是Visual Studio的一些怪癖。在回顾了您的评论之后,我今天坐下来,打开解决方案,尝试了几件事情,而且,它可以在我不做任何更改的情况下工作

不管怎样,谢谢你的帮助


Ashilta

您的代码和想法应该可以工作,但请发布确切的编译器错误。
Test
类是否显示在IDE的类视图或对象浏览器窗口中?还请注意,C#区分大小写,VB.NET则不区分大小写,因此可能是大小写问题。最后,您必须使类中的每个方法都
虚拟
在VB.NET中可重写
),以便重写它们。VB为每个项目都有一个根命名空间以及在该项目中嵌套的文件中声明的任何命名空间。C#没有这样的概念。因此,您可能有一个名为
SomeProject.CrossLanguage.Test
,与
CrossLanguage.Dog
位于不同命名空间中的类。因此,您需要添加一个using指令(正如错误告诉您的那样)或调整名称空间使用关键字用于导入命名空间。为什么要突出显示两种语言之间的差异?你应该让这个过程天衣无缝
CrossLanguage
只是引起了人们的注意。