Chapter 18. Attributes and Reflection
Throughout this book, I have emphasized that a .NET application contains code, data, and metadata. Metadata is information about the data—that is, information about the types, code, assembly, and so forth—that is stored along with your program. This chapter will explore how some of that metadata is created and used.
Attributes
are
a mechanism for adding metadata, such as compiler instructions and
other data about your data, methods, and classes, to the program
itself. Attributes are inserted into the metadata and are visible
through ILDasm
and other metadata-reading tools.
Reflection is the process by which a program can read its own metadata. A program is said to reflect on itself, extracting metadata from its assembly and using that metadata either to inform the user or to modify its own behavior.
Attributes
An attribute is an object that represents data
you want to associate with an element in your program. The element to
which you attach an attribute is referred to as the
target
of that attribute. For example, the
attribute:
[NoIDispatch]
is associated with a class or an interface to indicate that the
target class should derive from IUnknown
rather
than IDispatch
, when exporting to COM. COM
interface programming is discussed in detail in Chapter 22.
In Chapter 17, you saw this attribute:
[assembly: AssemblyKeyFile("c:\myStrongName.key")]
This inserts metadata into the assembly to designate the
program’s StrongName
.
Get Programming C# 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.