Что не наследуется в .Net? - PullRequest
0 голосов
/ 30 сентября 2011

Я был удивлен, узнав, что Implements или <Serializable()> не наследуются от класса к классу, что означает, что он должен быть переопределен каждый раз, когда я хочу воссоздать эти поведения. Мне было интересно, что еще не наследуется в .Net? Спасибо

Ответы [ 2 ]

5 голосов
/ 30 сентября 2011

Это 2 разных элемента: интерфейс и наследование атрибутов.

Часть Inherits относится к тому, как интерфейсы ведут себя в иерархиях классов.Интерфейсы действительно наследуются.Если данный базовый класс реализует IFactory, то все его производные типы будут.Существуют определенные странные языковые особенности того, как производный класс может повторно реализовать интерфейс или конкретные методы.Однако на уровне .Net, как только базовый класс реализует интерфейс, все производные классы также будут.

То, наследуется ли атрибут, зависит от значения AttributeUsage.Inherited в AttributeUsage для данного атрибута.,В случае Serializable он помечен как Inherits=false и не будет наследоваться.Каждый атрибут должен выбрать свое собственное поведение здесь.

1 голос
/ 30 сентября 2011

Длинный ответ займет слишком много времени, но короткий ответ - это любой класс, использующий модификатор sealed (c #) или NotInheritable (VB.NET).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...