est-il possible de fournir un initialisateur d'objet Lazy à un conteneur MEF?Fournir un délégué à l'initialisation MEF
Ici, il est un exemple:
[Export]
public class Bar
{
[ImportingConstructor[
public Bar([Import] Lazy<Foo> foo)
{
// [..]
}
}
TypeCatalog catalog = new TypeCatalog(typeof(Bar));
CompositionContainer container = new CompositionContainer(catalog);
Lazy<Foo> initializer = new Lazy(() =>
{
Foo foo = new Foo();
// foo initialization here
return foo;
});
container.ComposeExportedValue(initializer);
CompositionBatch batch = new CompositionBatch();
container.Compose(batch);
var export = container.GetExportedValue<Bar>(); // composition fails
Ce morceau de code ne fonctionne pas, alors que cela fonctionne si je l'appelle container.ComposeExportedValue (nouveau Foo()). Je voudrais passer directement un délégué pour créer l'objet paresseux. Est-ce possible sans avoir besoin d'un fournisseur d'exportation personnalisé?
Merci