While you can use inheritance in attributes, it is recommended that you not .
Since this is only a performance rule, you will not violate the correctness, but it can be a source of some confusion, and you should make a lot of effort so as not to violate the semantics of the base attribute. You can cause problems if you try to expand the possible locations for an attribute using the AttributeUsage flags. The rules for the attribute in question are quite complex .
A method can have one of two applied attributes, but not both. Any operation that does not apply uses an attribute that applies to the contained class. If the class containing the class does not have an attribute, the DataContractSerializer is used.
Let it make sealed sounds as a reasonable plan on their part. This API is not designed with these kinds of extensions in mind.
There is no way to add attributes to existing classes at runtime (except for entering AOP code).
source share