Как я могу отключить внешнее наследование (без классов) в C #? - PullRequest
1 голос
/ 30 августа 2010

Как я могу отключить внешнее наследование без использования классов? Я знаю, что это можно сделать с помощью таких классов:

public abstract class NoInherit
{
    internal NoInherit() { }
}

public sealed class MyType : NoInherit { /* ... */ }

Но не с интерфейсами. Я не хочу использовать классы, потому что я хочу наследовать MyType от другого класса, а C # не поддерживает множественное наследование.

Возможно, мне лучше объяснить, что я пытаюсь сделать. Я пытаюсь создать объектный класс, но он принимает только некоторые типы.

List<NoInherit> x = new List<NoInherit>();
x.Add(new MyType()); // OK
x.Add(new MyType2()); // OK
x.Add(123); // ERROR
...