.net c#中的装配订购


Ordering of reflection requests in dotnet中提出了类似的问题

但是我希望得到一个不同的答案……我正在为一个程序编写一个插件,该程序使用反射来查询插件以找到入口点.不幸的是,它有一个错误,这意味着如果它在此过程中遇到一个接口声明,它会崩溃一个未处理的异常.我已经和开发团队谈过了,这不太可能修复.由于显而易见的原因,这对我来说是非常有限我已经想到的一个解决方法是让我的程序集加载另一个带有接口的程序集,但由于原因我不会进入这个不是​​一个很好的解决方案.我遇到这个问题已经有一段时间了,因为出于某种原因,我的入口类总是在反射枚举顺序中的接口之前.

我的问题是,有没有办法影响程序集中类和接口的顺序?

注意:我已经尝试在我的界面上设置不同的辅助功能级别,但这对我不起作用.
干杯,
Ĵ

最佳答案 我打赌使用AppDomain.GetAssemblies()然后检查代码. AppDomain.GetAssemblies()的实现导致了一个外部方法,因此Reflector在这里几乎没有帮助.

但是,如果没有实际尝试并检查结果,结果中的程序集排序有两个逻辑选项:

>加载订单
>按字母顺序排列

在第一种情况下,您可能必须在程序集和加载顺序之间组织引用,以便外部代码找到具有入口点类的正确程序集并停止.在第二种情况下,以“正确”的方式命名组件是一个纯粹的问题,但我怀疑是这种情况.

(但是,顺序可能与上面的两个完全不同,例如“大多数”也是随机的.)

在任何一种情况下,我都认为有缺陷的代码迟早会遇到有问题的装配和崩溃.因此,强烈的建议是:坚持修复错误.

点赞