Type.GetType("TheClass");
Returns null
if the namespace
is not present like:
Type.GetType("SomeNamespace.TheClass"); // returns a Type object
Is there any way to avoid giving the namespace
name?
GetType or Assembly. GetTypes method to get Type objects. If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic. If typeName cannot be found, the call to the GetType(String) method returns null .
The gettype() function returns the type of a variable.
The GetType method is inherited by all types that derive from Object. This means that, in addition to using your own language's comparison keyword, you can use the GetType method to determine the type of a particular object, as the following example shows.
I've used a helper method that searches all loaded Assemblys for a Type matching the specified name. Even though in my code only one Type result was expected it supports multiple. I verify that only one result is returned every time I used it and suggest you do the same.
/// <summary> /// Gets a all Type instances matching the specified class name with just non-namespace qualified class name. /// </summary> /// <param name="className">Name of the class sought.</param> /// <returns>Types that have the class name specified. They may not be in the same namespace.</returns> public static Type[] getTypeByName(string className) { List<Type> returnVal = new List<Type>(); foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies()) { Type[] assemblyTypes = a.GetTypes(); for (int j = 0; j < assemblyTypes.Length; j++) { if (assemblyTypes[j].Name == className) { returnVal.Add(assemblyTypes[j]); } } } return returnVal.ToArray(); }
There is no need to complicate things.
AppDomain.CurrentDomain .GetAssemblies() .SelectMany(x => x.GetTypes()) .FirstOrDefault(t => t.Name == "MyTypeName");
Use Where
instead of FirstOrDefault
to get all the results.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With