C# 当类型位于其他程序集中时,反射方法失败
我正在制作一个递归分析代码依赖关系的小工具。我发现了一个问题:如果我试图获取一个类的成员,该类的签名包含对另一个dll的引用,那么该方法将失败。例如,如果我在Main.exe中有一个简单的类C# 当类型位于其他程序集中时,反射方法失败,c#,reflection,reference,C#,Reflection,Reference,我正在制作一个递归分析代码依赖关系的小工具。我发现了一个问题:如果我试图获取一个类的成员,该类的签名包含对另一个dll的引用,那么该方法将失败。例如,如果我在Main.exe中有一个简单的类 public class MainClass { public MainClass () { foo(); } public ContainedClass GetPublicClass () { return new ContainedClass
public class MainClass {
public MainClass () {
foo();
}
public ContainedClass GetPublicClass () {
return new ContainedClass ();
}
}
而ContainedClass
是在其他文件reference.dll中定义的,当我尝试以下代码时,它会在met3.ReturnType()中抛出FileNotFoundException
方法,导致.net找不到reference.dll
Assembly assem = Assembly.LoadFile(@"D:\dir\Main.exe");
Type typ = assem.GetType ("MultipleReference.MainClass");
MethodInfo met3 = typ.GetMethod ("GetPublicClass");
met3.ReturnType.ToString ();
有没有办法指明在哪里搜索dll
提前感谢并为我的英语感到抱歉。使用而不是,因为它还将解析和加载依赖程序集。引用文件:
使用LoadFile方法来加载和
检查具有相同属性的程序集
身份,但位于不同的位置
路径。LoadFile不加载文件
进入LoadFrom上下文,并执行以下操作
不使用
加载路径,如LoadFrom方法
做LoadFile在这方面很有用
有限的场景,因为LoadFrom
无法用于加载以下程序集:
有相同的身份但不同
路径;它将只加载第一个
这样的集会
另外,如果出于某种原因您想。。。