Attributes
Attributes are language constructs that can decorate a code element (assemblies, modules, types, members, return values, and parameters) with additional information.
In every language, you specify information associated with the types,
methods, parameters, and other elements of your program. For example,
a type can specify a list of interfaces from which it derives, or a
parameter can specify modifiers, such as the ref
modifier in C#. The limitation of this approach is that you can
associate information with code elements using only the predefined
constructs that the language provides.
Attributes allow programmers to extend the types of information associated with these code elements. For example, serialization in the .NET Framework uses various serialization attributes applied to types and fields to define how these code elements are serialized. This approach is more flexible than requiring the language to have special syntax for serialization.
Attribute Classes
An attribute is defined by a class that
inherits (directly or indirectly) from the abstract class
System.Attribute
. When specifying an attribute to
an element, the attribute name is the name of the type. By
convention, the derived type name ends in
Attribute
, although specifying the suffix is not
required when specifying the attribute.
In this example, the Foo
class is specified as
serializable using the Serializable
attribute:
[Serializable] public class Foo {...}
The Serializable
attribute is actually a type ...
Get C# Language Pocket Reference now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.