如何在C#中创建A类,其中A只能由B,C,D继承?

时间:2011-06-15 04:44:45

标签: c# .net inheritance

有一些机制允许只在C#中使用N类继承类?

5 个答案:

答案 0 :(得分:7)

您可以将它和它的派生类放在一个单独的程序集中,并将基类的构造函数声明为internal。这样,虽然您可以在不同的程序集中继承它,但是您无法实例化任何派生类。

答案 1 :(得分:4)

不,但是如果超过限制,你总是可以让构造函数抛出异常。

答案 2 :(得分:3)

// can be inherited only by classes in the same assembly
public abstract class A
{
    protected internal A() { }
}

// can't be inherited
public sealed class B : A
{
}

答案 3 :(得分:1)

仅仅因为我个人的启发,我想更多地了解商业背景,这使得这样的设计选择变得可取,因为我第一次看到这个标题是“哦,非常非常糟糕的主意!一个基类是绝对的应该知道任何事情(更糟糕的是:统治)它的派生类“。

答案 4 :(得分:-1)

你可以使类AN抽象并在任意数量的类中继承它。