tags:

views:

206

answers:

3

Dear ladies and sirs.

In numerous places do I encounter partially qualified type names of the form FullTypeName, AssemblyName, i.e. like Type.AssemblyQualifiedName only without the version, culture and publicKeyToken qualifiers.

My question is how can one convert it to the respective Type in a minimum of effort? I thought that Type.GetType does the job, but alas, it does not. The following code, for instance, returns null:

Type.GetType("System.Net.Sockets.SocketException, System");

Of course, if I specify the fully qualified name it does work:

Type.GetType("System.Net.Sockets.SocketException, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

Thanks a lot.

A: 

If the DLL it's in isn't already loaded into the application domain (e.g. you used it), you need the full path like this, if it's already loaded, it can find it with the shorter version.

To answer your question: the second version always works, stick with it and you have one way to worry about.

Nick Craver
A: 

i think shorter form works only if your class is either in same assembly or in mscorlib

Andrey
A: 

Code working with the short form is:

    Assembly a = Assembly.LoadWithPartialName(assemblyName);
    Type t = a.GetType(typeName);

but LoadWithPartialName is deprecated, so I guess you should stick with the long form.

Timores