variable usar programacion metodos metodo estaticos estaticas cuando clases c# .net c#-4.0 mef

usar - variable static c#



Uso de C#MEF con clases estáticas (2)

Bueno, resulta que el método que estaba buscando es GetExportedValue (sí, pasé por alto la funcionalidad básica):

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>(); }

Y obtuve mi campo lleno (por si acaso, ya lo moví a otra clase, y se ve limpio y ordenado ahora)

Tengo una clase estática en mi solución que se usa para trabajar con varios ensamblajes. Quiero vincularlos a través de MEF, así que hice un campo en una clase.

[Import(typeof(A))] static private A _a1;

Luego tengo un método para pasar el nombre del ensamblado como argumento:

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

Entonces, ¿hay alguna forma de importar el tipo de ensamblado especificado por filepath?

No puedo hacer:

_container.ComposeParts(this);

ya que la clase es `estática y tampoco puedo hacer esto

_container.ComposeParts(_a1);

(lo cual podría ser completamente incorrecto para empezar) ya que A no tiene ningún constructor (entonces _a1 es nulo)


MEF está diseñado para crear e inicializar objetos para usted. No se trata de estado en clases estáticas.

Sugiero que haga que la clase y sus campos no sean estáticos, y lo marque con [PartCreationPolicy(CreationPolicy.Shared)] si desea aplicar el comportamiento de singleton.

Ver también esta otra pregunta sobre MEF y el patrón singleton.