Yip*_*Yay 5 .net c# dependency-injection mef dependency-management
假设我有一个带有一组标记有[Import]属性的字段的类,其中所有这些字段都禁止重构.
在某个时刻,new MyClassWithInjectedFields(...)使用MEF框架实例化此类,并使用框架注入所有相应的依赖项- 没有严重的,只有双射Export-To-Import映射.
问题:
是否可以安全地假设在这种情况下,注入字段的值将保持不变,直到类实例被垃圾回收?
或者可能有一些罕见/模糊的情况,它们可能会
MEF在运行时隐式更改?也许,当有人卸载或重新加载用于依赖解析的程序集时?
(我是新手MEF,我不确定在运行时是否有影响依赖图的方法,但是,显然可能存在).
1)MEF没有对GC执行任何特殊操作,因此在没有对象的实时引用之前,实例将不会被GC.
2)如果Imports未标记为可重组,则MEF将仅更改Imports的值.您无法在正在运行的.NET进程中卸载\重新加载程序集,您可以卸载AppDomain,但这样做基本上会强制终止对象引用,但MEF不会执行任何特殊操作来重置它们.