如何在C#中禁用外部继承(没有类)?

如何在C#中禁用外部继承(没有类)?,c#,inheritance,constructor,internal,C#,Inheritance,Constructor,Internal,如何在不使用类的情况下禁用外部继承?我知道这样的课程可以做到: public abstract class NoInherit { internal NoInherit() { } } public sealed class MyType : NoInherit { /* ... */ } 但不包括接口。我不想使用类,因为我想从另一个类继承MyType,而C#不支持多重继承 也许我应该更好地解释我想做什么。我试图创建一个类似对象的类,但它只接受某些类型 List<NoInher

如何在不使用类的情况下禁用外部继承?我知道这样的课程可以做到:

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
List x=新列表();
x、 添加(新MyType());//好啊
x、 添加(新的MyType2());//好啊
x、 加(123);//错误

哦,我明白你现在的意思了。但你不能那样做。在基于类的版本中,您可以不受影响的唯一原因是,通过将构造函数设置为内部构造函数,您有点“作弊”。既然接口没有构造函数,那么这种想法是不可能实现的。为什么不使用自己的IList类并在Add方法中处理约束呢?