クラスを使用せずに外部継承を無効にするにはどうすればよいですか? 私はそれが次のようなクラスでできることを知っています:
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