什么不能在.Net中继承?

时间:2011-09-30 16:56:02

标签: .net inheritance

我想我很惊讶地发现Implements<Serializable()>没有从一个类继承到类,这意味着每次我想重新创建这些行为时都必须重新定义它。我想知道在.Net中还有哪些不可篡改?感谢

2 个答案:

答案 0 :(得分:5)

这些是两个不同的项目:接口和属性继承。

Inherits部分指的是接口在类层次结构中的行为方式。接口确实是继承的。如果给定的基类实现IFactory,那么它的所有派生类型都会。关于派生类如何重新实现接口或特定方法,存在某些语言上的奇怪之处。但是,在.Net级别,一旦基类实现了一个接口,所有派生类也将如此。

是否继承属性取决于给定属性AttributeUsage.InheritedAttributeUsage的值。在Serializable的情况下,它被标记为Inherits=false并且不会被继承。每个属性都必须在这里选择自己的行为。

答案 1 :(得分:1)

长答案需要很长时间,但简短的回答是任何使用sealed(c#)或NotInheritable(VB.NET)修饰符的类。

http://msdn.microsoft.com/en-us/library/88c54tsw%28v=vs.71%29.aspx