【发布时间】:2017-08-23 05:44:48
【问题描述】:
internal class MyClassA
{
[...properties...]
public List<string> DoSomething(){}
}
// Different project/assembly, same solution:
public class MyBase
{
protected MyClassA _myClassA = new MyClassA(); // Here is the problem
}
// What I want to do:
public class SomeOtherClass : MyBase
{
private static void Foo(){
var list = _myClassA.DoSomething();
}
}
SomeOtherClass 继承自 MyBase。
MyBase 应创建 MyClassA 的实例,以使其可由 SomeOtherClass 访问(受保护)。
但由于 MyClassA 是内部的,所以这是不可能的。
我怎样才能使 SomeOtherClass 在使用 MyBase 中的实例时可以使用 MyClassA.DoSomething() 成为可能?
PS:我完全意识到“只是将可见性从 MyClassA 更改为 public”的可能性,但这不是一个选项。
【问题讨论】:
-
我无法以任何方式修改 MyClassA 类。如果可以的话,我会改成公开的
-
不需要修改 MyClassA ,该属性是在程序集级别应用的
-
只需将 MyBase 类包含到包含 MyClassA 的程序集中。
-
链接的副本不正确,这与标题中的描述相反,不是关于继承,而只是关于内部类,嗯......内部,以及如何处理这个问题。 @AlekseyL. 上面的评论是正确的。要使一个程序集中的内部类在另一个程序集中可用,您必须将
InternalsVisibleToAttribute添加到带有类的程序集。
标签: c# oop inheritance