Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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#_.net_Reflection - Fatal编程技术网

C# 有没有一种方法可以使用反射单独检查程序集?

C# 有没有一种方法可以使用反射单独检查程序集?,c#,.net,reflection,C#,.net,Reflection,我有一个插件程序集,它引用它“插入”的应用程序的第三方程序集。然后,我有一个运行这个第三方应用程序的实用程序,将类的全名、程序集名称和插件中要运行的方法传递给它 我可以在实用程序中将这些细节硬编码为字符串常量。但是,我希望在运行时使用反射获取它们。plugin类实现了一个特定的接口,该方法用一个自定义属性进行注释。所以我认为这应该是可能的。我在插件中添加了一个特定的反射类,并调用它来获取详细信息。但它落在(代表性的)一行: 由于尝试加载某个第三方程序集,Assembly.GetExecution

我有一个插件程序集,它引用它“插入”的应用程序的第三方程序集。然后,我有一个运行这个第三方应用程序的实用程序,将类的全名、程序集名称和插件中要运行的方法传递给它

我可以在实用程序中将这些细节硬编码为字符串常量。但是,我希望在运行时使用反射获取它们。plugin类实现了一个特定的接口,该方法用一个自定义属性进行注释。所以我认为这应该是可能的。我在插件中添加了一个特定的反射类,并调用它来获取详细信息。但它落在(代表性的)一行:

由于尝试加载某个第三方程序集,Assembly.GetExecutionGassembly().GetExportedTypes()出现FileNotFound异常。由于许可规则,我不想将该实用程序直接链接到这些第三方程序集


所以我的问题是,如何在不触发其他引用程序集的加载尝试的情况下,获取插件程序集中的类列表?是否可能,或者我必须使用字符串常量?

一种可能的解决方案可能是使用
Mono.Cecil
进行检查而不是反射为什么要检查程序集?您将如何处理您得到的
类型
s?计划是迭代每个类型,以检查它是否实现了接口。如果是这样,我计划搜索该类型以找到用我的自定义属性注释的方法。然后使用这些值调用具有-exec“.”等参数的应用程序。ReflectionOnlyLoad是否执行此操作@Tergiver,谢谢你的建议,但遗憾的是这不起作用。当我尝试ReflectionOnlyLoad路由时,它给了我一个例外:“当使用ReflectionOnly API时,依赖程序集必须通过ReflectionOnlyAssemblyResolve事件预加载或按需加载。”:(这不是我想要的答案,但它似乎是唯一的解决方案,因此我将其标记为正确的解决方案。