O'Reilly logo

C# Essentials by Peter Drayton, Ben Albahari, Brad Merrill

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Reflection

Many of the services available in .NET and exposed via C# (such as late binding, serialization, remoting, attributes, etc.) depend on the presence of metadatas. Your own programs can also take advantage of this metadata, and even extend it with new information.

Manipulating existing types via their metadata is termed reflection and is done using a rich set of types in the System.Reflection namespace. Creating new types (and associated metadata) is termed Reflection.Emit, and is done via the types in the System.Reflection.Emit namespace. You can extend the metadata for existing types with custom attributes. For more information, see Section 3.11.

Type Hierarchy

Reflection involves traversing and manipulating an object model that represents an application, including all its compile-time and runtime elements. Consequently, it is important to understand the various logical units of a .NET application and their roles and relationships.

The fundamental units of an application are its types, which contain members and nested types. In addition to types, an application contains one or more modules and one or more assemblies. All these elements are static and are described in metadata produced by the compiler at compile time. The one exception to this rule are elements (such as types, modules, assemblies, etc.) that are created on the fly via Reflection.Emit, which is described in Section 3.10.8.

At runtime, these elements are all contained within an AppDomain. An AppDomain isn’t described ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required