C# MEF usage with static classes

亡梦爱人 提交于 2019-12-04 02:08:49
Wim Coenen

MEF is designed to create and initialize objects for you. It doesn't deal with state in static classes.

I suggest that you make the class and its fields non-static, and mark it with [PartCreationPolicy(CreationPolicy.Shared)] if you want to enforce singleton behavior.

See also this other question on MEF and the singleton pattern.

noaRAVE

Well it turns out that method I was looking for is GetExportedValue (yeah, I overlooked basic functionality):

static private A _a1;

public static A LoadPackage(string filePath)
{
        var catalog = new AggregateCatalog();
        catalog.Catalogs.Add(new AssemblyCatalog(filePath));
        var _container = new CompositionContainer(catalog);
        _a1 = _container.GetExportedValue<A>();
}

And I got my field filled (just in case, I already moved it to another class, and it looks neat and clean now)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!