2009-10-24 6 views
3

Il semble que le framework MEF crée des objets qui ont un CTOR par défaut. Que diriez-vous de CTOR adapté aux besoins du client, ou de constructeur avec des paramètres? Par exemple:Est-ce que MEF supporte le CTOR personnalisé?

[Export (typeof(IInterface1))] 
public class MyClass : IInterface1 
{ 
    public MyClass(int id) {....} 
    .... 
} 

Sinon, d'une manière que je peux penser est de faire passer l'objet en tant que paramètres à CTOR. Par exemple:

public Interface IParameterID { public int Id {get; ensemble privé; } ...}

Alors le CTOR sera:

public MyClass([Import(typeof(IParameter))] IParameterID id) 
{ ... } 

Je ne sais pas s'il est possible d'ajouter l'attribut aux paramètres de Ctor? Et la question suivante est que si MEF créera automatiquement une instance d'IParameter et l'injectera au paramètre de CTOR?

Répondre

4

Oui, c'est possible. Mettez simplement un [ImportingConstructorAttribute] sur le constructeur que vous souhaitez utiliser. Les paramètres seront automatiquement traités comme des importations, mais si vous devez modifier le nom du contrat, vous pouvez également leur attribuer un attribut d'importation.