Переопределение наследования внутренних атрибутов в C # - PullRequest
4 голосов
/ 10 августа 2010

После борьбы с целым рядом необработанных исключений при попытке сериализации моих классов и подклассов я наконец понял, в чем заключалась моя проблема: [Serializable] не наследуется подклассами при применении к базовому классу.Я все еще не совсем понимаю атрибуты C # в целом, но я понимаю, что при создании пользовательского атрибута программист может включить автоматическое наследование атрибута.

Есть ли способ переопределить наследование[Serializable]?Есть ли веская причина, почему это не было сделано с самого начала и / или было бы плохой идеей сделать это с самого начала?Я хотел бы, чтобы все подклассы указанного базового класса были сериализуемыми, так что кажется просто неуместным добавлять атрибут ко всем новым подклассам, которые я делаю.

Спасибо!

1 Ответ

5 голосов
/ 10 августа 2010

Существует абсолютно веская причина, по которой это не было сделано в первую очередь - просто потому что сериализуемый базовый класс не означает, что производный класс естественным образом.

Черт, object является сериализуемым - если сериализуемость наследуется, это будет означать, что каждый класс в .NET будет сериализуемым:)

Вы также не можете "переопределить" это - вы должны указать это для каждого класса. Я думаю, что на самом деле это хорошая вещь - когда вы добавляете атрибут, вы должны выполнить мысленную проверку класса и убедиться, что он действительно имеет смысл сериализовать его.

...