C# Language Get a Type by name with namespace


Example

To do this you need a reference to the assembly which contains the type. If you have another type available which you know is in the same assembly as the one you want you can do this:

typeof(KnownType).Assembly.GetType(typeName);
  • where typeName is the name of the type you are looking for (including the namespace) , and KnownType is the type you know is in the same assembly.

Less efficient but more general is as follows:

Type t = null;
foreach (Assembly ass in AppDomain.CurrentDomain.GetAssemblies())
{
    if (ass.FullName.StartsWith("System."))
        continue;
    t = ass.GetType(typeName);
    if (t != null)
        break;
}

Notice the check to exclude scanning System namespace assemblies to speed up the search. If your type may actually be a CLR type, you will have to delete these two lines.

If you happen to have the fully assembly-qualified type name including the assembly you can simply get it with

Type.GetType(fullyQualifiedName);