How do I obtain an instance of a Type
class for a type not defined in the currently executing assembly or in mscorlib.dll
?
a) Namely, I've defined a class type someType
in assembly CSharpSnapIn.dll
, located at E:\CSharpSnapIn.dll
, but for some reason when I try to specify an absolute path to this assembly, I get an exception:
Type t = Type.GetType("someType, E:\\CSharpSnapIn.dll"); // exeception
b) I've also tried by putting CSharpSnapIn.dll
into \bin\debug
directory of a currently running application, but I still get an exception:
Type t = Type.GetType("someType, CSharpSnapIn.dll"); // exeception
thanx
EDIT:
1) I've declared another class type someType2
( inside CsharpSnapIn.dll
)and this time it worked:
Type.GetType("someType2, CSharpSnapIn");
Difference between someType
and someType2
is that someType
implements an interface declared in external assembly asmIn
, but this shouldn't cause an exception, since CsharpSnapIn.dll
does have a reference to asmIn
?!
2)
Note that the assembly doesn't need to be loaded first, so long as the assembly resolver can find it
In other words, calling Type.GetType()
first loads an assembly and then creates a Type
instance?
3)
The assembly has to be found by probing, so it would have to be in the bin directory as per your second example. If it's an assembly with a strong name, you have to give all the details.
So you're saying we can't specify an absolute path ( to an assembly ) using Type.GetType()
, but instead assembly needs to reside inside a bin
directory?