您可以使用 MEF 水合静态属性吗?
我可以在类的静态构造函数中水合它吗?
public class Connect:IDTExtensibility2, IDTCommandTarget
static Connect()
{
//hydrate static properties?
}
[Import]
public static Action<ProjectLogicChecks> Display { get; set; }
[Export(typeof(Action<ProjectLogicChecks>))]
private static void DisplayResults( CheckProcesses _checkResults)
{
MessageBox.Show(_checkResults.ProjectLogicCheck.AssemblyName + " has problems=" +
_checkResults.ProjectLogicCheck.HasProblems);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不,MEF 不支持静态导入。
No, MEF doesn't support static imports.
您可以使用 [ImportingConstructor] 并在构造函数中设置静态属性。
只是不要将其设置为静态字段。
You can use [ImportingConstructor] and set the static property in the constructor.
Just don't set it to a static field.
这比我想象的要容易。
将类型更改为
Action>
,以便我可以显示多个项目或整个解决方案的结果,而不仅仅是一个。我遵循 这篇文章来获取静态属性集,然后此 提供本地默认值,以防不存在扩展名。
It was easier than I thought it would be.
Changed the type to
Action<IEnumerable<ProjectLogicChecks>>
so that I could display results for multiple projects or a whole solution instead of just the one.I followed this article to get the static property set, then this to provide local defaults in case there is no extension present.