从另一个内部子类继承内部基类

本文关键字:内部 基类 继承 子类 另一个 | 更新日期: 2023-09-27 18:25:27

我在MyProject中有一个内部类。我的UnitTestProject中有另一个内部类。我想从UnitTestProject.internalClass继承MyProject.internal Class。但我无法继承。这是我的密码。

namespace MyProject.Data
{
    internal class BaseClass
    {
    }
}

namespace MyUnitTests.Data
{
    internal class TestClass: BaseClass
    {
    }
}

我在UnitTests项目中添加了引用MyProject.dll。但我还是不能继承。我不确定我的做法是对是错。请给我什么建议?

从另一个内部子类继承内部基类

参见InternalsVisibleToAttribute。您应该将此属性放入MyProject程序集的AssemblyInfo.cs中:

[assembly:InternalsVisibleTo("MyUnitTests")]

Internal表示该类仅对程序集本身可见。将BaseClass更改为public

由于我们似乎在这里处理测试,还可以查看InternalsVisibleTo以保持基类的内部,但允许显式(例如测试)程序集查看它。

内部类仅在定义的程序集中可见。因此,默认情况下,不可能从另一个程序集访问一个程序集中的内部类。

为此,可以使用InternalsVisibleToAttribute。