Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当类型位于其他程序集中时,反射方法失败_C#_Reflection_Reference - Fatal编程技术网

C# 当类型位于其他程序集中时,反射方法失败

C# 当类型位于其他程序集中时,反射方法失败,c#,reflection,reference,C#,Reflection,Reference,我正在制作一个递归分析代码依赖关系的小工具。我发现了一个问题:如果我试图获取一个类的成员,该类的签名包含对另一个dll的引用,那么该方法将失败。例如,如果我在Main.exe中有一个简单的类 public class MainClass { public MainClass () { foo(); } public ContainedClass GetPublicClass () { return new ContainedClass

我正在制作一个递归分析代码依赖关系的小工具。我发现了一个问题:如果我试图获取一个类的成员,该类的签名包含对另一个dll的引用,那么该方法将失败。例如,如果我在Main.exe中有一个简单的类

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 无法用于加载以下程序集: 有相同的身份但不同 路径;它将只加载第一个 这样的集会


另外,如果出于某种原因您想。。。