Attributes
You’re already familiar with the notion of attributing code
elements of a program with modifiers, such as virtual
or ref
. These constructs are built into the
language. Attributes are an extensible mechanism for
adding custom information to code elements (assemblies, types, members,
return values, and parameters). This extensibility is useful for services
that integrate deeply into the type system, without requiring special
keywords or constructs in the C# language.
A good scenario for attributes is serialization—the process of converting arbitrary objects to and from a particular format. In this scenario, an attribute on a field can specify the translation between C#’s representation of the field and the format’s representation of the field.
Attribute Classes
An attribute is defined by a class that inherits (directly or
indirectly) from the abstract class System.Attribute
. To attach an attribute to a
code element, specify the attribute’s type name in square brackets, before the
code element. For example, the following attaches the ObsoleteAttribute
to the Foo
class:
[ObsoleteAttribute]
public class Foo {...}
This attribute is recognized by the compiler and will cause compiler warnings if a type or member marked obsolete is referenced. By convention, all attribute types end with the word Attribute. C# recognizes this and allows you to omit the suffix when attaching an attribute:
[Obsolete]
public class Foo {...}
ObsoleteAttribute
is a type
declared in the System
namespace as ...
Get C# 5.0 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.