You can get hold of Types in a variety of ways. You can extract the Types available in an Assembly as follows:
Assembly executingAssembly = Assembly.GetExecutingAssembly();
Type[] typesAttachedToAssembly = executingAssembly.GetTypes();
Console.WriteLine("Types attached to executing assembly: ");
foreach (Type type in typesAttachedToAssembly)
{
Console.WriteLine(type.FullName);
}
In my case I have the following types in the executing assembly:

You can also extract the types within a single Module of an assembly:
Module[] modulesInCallingAssembly = executingAssembly.GetModules();
foreach (Module module in modulesInCallingAssembly)
{
Console.WriteLine("Module {0}: ", module.Name);
Type[] typesAttachedToModule = module.GetTypes();
foreach (Type type in typesAttachedToModule)
{
Console.WriteLine(type.FullName);
}
}
…which outputs the following:

You can construct Types without reflection using the GetType method and the typeof keyword. Say you have a simple Customer object:
public class Customer
{
public string Name { get; set; }
}
…then you can get its type in the following ways:
Type customerType = customer.GetType();
Console.WriteLine(customerType.FullName);
Type customerTypeRevisited = typeof(Customer);
Console.WriteLine(customerTypeRevisited.FullName);
These will yield the same result:

Once you have a Type you can inspect it through a myriad of properties. Here comes a short extract:
Console.WriteLine("Full name: {0}", customerType.FullName);
Console.WriteLine("Namespace: {0}", customerType.Namespace);
Console.WriteLine("Is primitive? {0}", customerType.IsPrimitive);
Console.WriteLine("Is abstract? {0}", customerType.IsAbstract);
Console.WriteLine("Is class? {0}", customerType.IsClass);
Console.WriteLine("Is public? {0}", customerType.IsPublic);
Console.WriteLine("Is nested? {0}", customerType.IsNested);

There are methods available on the Type object to read all sorts of information that can be reflected on: interfaces, constructors, properties, methods etc. We’ll look at those separately.
View all posts on Reflection here.
Like this:
Like Loading...