现在我们使用基本上是目录目录来初始化MEF。也就是说,所有程序集都被加载,即使那些没有使用的程序集。
好吧,我们已经修改了一点 - 所有程序集都在反射范围内进行检查,看它们是否具有某个程序集属性,只有具有这些属性的程序集才会被选择。
但仍然没有任何关于它的懒惰。一个特性可能永远不会被实际使用,但是实现它的程序集仍然会被加载。
我在同一主题上发现了这个5年前的问题 - Lazy Loading DLL's with MEF。如果我正确理解答案,那么当时没有懒惰加载(社区链接没有给我任何有用的东西)。
现在还是这种情况吗?我们可以有懒惰的dll加载吗?
这是我希望它工作的方式:
- 接口ISomeFeature在编译时已知,并且当然已经被加载。 - ISomeFeature的实现是SomeFeatureImpl,并且在任何代码都没有引用的程序集中找到。 - 希望使用该功能的任何人都依赖于ISomeFeature。
我希望只要不运行依赖于ISomeFeature的任何代码,就不会加载实现SomeFeatureImpl的程序集。显然,当执行依赖于ISomeFeature的代码时,必须加载实际实现(如果尚未加载),并成功解决依赖关系。
我要求太多了吗?MEF是否支持它?
好吧,我们已经修改了一点 - 所有程序集都在反射范围内进行检查,看它们是否具有某个程序集属性,只有具有这些属性的程序集才会被选择。
但仍然没有任何关于它的懒惰。一个特性可能永远不会被实际使用,但是实现它的程序集仍然会被加载。
我在同一主题上发现了这个5年前的问题 - Lazy Loading DLL's with MEF。如果我正确理解答案,那么当时没有懒惰加载(社区链接没有给我任何有用的东西)。
现在还是这种情况吗?我们可以有懒惰的dll加载吗?
这是我希望它工作的方式:
- 接口ISomeFeature在编译时已知,并且当然已经被加载。 - ISomeFeature的实现是SomeFeatureImpl,并且在任何代码都没有引用的程序集中找到。 - 希望使用该功能的任何人都依赖于ISomeFeature。
我希望只要不运行依赖于ISomeFeature的任何代码,就不会加载实现SomeFeatureImpl的程序集。显然,当执行依赖于ISomeFeature的代码时,必须加载实际实现(如果尚未加载),并成功解决依赖关系。
我要求太多了吗?MEF是否支持它?