2010-10-04 6 views
7

Je n'arrive pas à trouver Microsoft.Practices.Unity.StaticFactory.dll n'importe où.Unity Static Factory Extension

Existe-t-il un autre moyen d'enregistrer une usine statique?

Vous cherchez quelque chose comme ça

container.RegisterFactory (() => FooFactory.CreateFoo());

Répondre

14

StaticFactory.dll a été déployé dans l'ensemble principal dans le cadre de l'unité 2.0. C'était généralement assez utile que nous ne voulions pas forcer les gens à transporter une DLL séparée juste pour l'obtenir. En tant que tel, vous pouvez toujours utiliser l'API existante, vous n'avez simplement pas besoin d'ajouter la référence d'assembly. Cependant, nous avons désapprouvé l'ancienne API. L'extension peut être ajoutée, mais ne fait rien, elle est déjà incluse dans le conteneur. Et vous pouvez maintenant enregistrer des usines dans le conteneur en disant:

container.RegisterType<IFoo, Foo>(new InjectionFactory(c => new Foo()); 

où c est le conteneur qui est la résolution de l'instance. Il y a aussi une option pour transmettre le type et le nom en cours de résolution.

Nous avons déconseillé l'ancienne API car elle était très difficile à utiliser et de toute façon, ce n'est plus une extension.

0

La méthode RegisterFactory fait partie de la classe StaticFactoryExtension, qui est obsolète comme vous pouvez le voir here.

Si vous cherchez des extensions de fabricant, this thread devrait vous aider.

J'espère que cela aide.

Merci, Damian

+0

Pourquoi est-il obsolète? –

+0

Comme indiqué dans le lien que j'ai fourni: [ObsoleteAttribute ("Utiliser RegisterType (nouvelle InjectionFactory (...)) au lieu des méthodes de l'extension.")] –