StructureMap singleton utilisation (Une classe de mise en œuvre de deux interface)
public interface IInterface1
{
}
public interface IInterface2
{
}
public class MyClass : IInterface1, IInterface2
{
}
...
ObjectFactory.Initialize(x =>
{
x.For<IInterface1>().Singleton().Use<MyClass>();
x.For<IInterface2>().Singleton().Use<MyClass>();
});
var x = ObjectFactory.GetInstance<IInterface1>();
var y = ObjectFactory.GetInstance<IInterface2>();
- Je obtenir deux différents MyClass cas, avec le code ci-dessus. Comment puis-je en obtenir un?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la Hâte<,>() enregistrement de dire StructureMap pour résoudre un type à l'aide de la résolution d'un type différent. Ceci devrait faire ce que vous attendez:
Je voudrais enregistrer le MyClass lui-même, puis tirer que hors du contexte de l'Utilisation des déclarations de la personne interfaces.
Essayer de regarder les différentes surcharges à Utiliser, en particulier Func surcharge. De là, vous pouvez dire combien de StructureMap devrait créer votre instance avec un autre objet déjà inscrit.
Un
ObjectFactory
est prévu de créer plusieurs instances. Si vous souhaitez un singleton, écrire une classe singleton (peut-être avec le publicIInterface1
etIInterface2
propriétés que les accesseurs).Il semble donc sommairement documenté, mais peut-être vous pouvez utiliser un Conteneur à la place.