Mam dwie usługi, które wymagają XPathDocument
. Chcę móc zdefiniować nazwane instancje XPathDocumnet
do użycia w konfiguracji obu usług. Chcę również móc poinformować StuctureMap, z którego konstruktora będzie korzystać XPathDocument
. Kiedy próbuję pobrać instancję o numerze XPathDocument
, oznacza to, że nie może znaleźć typu podłączonego do XmlReader
. Chcę użyć konstruktora, który wymaga uri ciąg dla pliku xml. Nie wydaje mi się, żeby to działało. Oto kod konfiguracji StructureMap.Powiedz StructureMap, aby użyć określonego konstruktora.
public class Service1 : IService1 {
public Service1(XPathDocument document) {}
}
public class Service2 : IService2 {
public Service2(XPathDocument document) {}
}
public class Registry1 : Registry {
ForRequestedType<IService1>().TheDefault.Is.OfConcreteType<Service1>()
.CtorDependency<XPathDocument>()
.Is(x => x.TheInstanceNamed("XPathDocument1"));
ForRequestedType<IService2>().TheDefault.Is.OfConcreteType<Service2>()
.CtorDependency<XPathDocument>()
.Is(x => x.TheInstanceNamed("XPathDocument2"));
ForRequestedType<XPathDocument>().AddInstances(x => {
x.OfConcreteType<XPathDocument>()
.WithCtorArg("uri").EqualToAppSetting("XmlFile1")
.WithName("XPathDocument1");
x.OfConcreteType<XPathDocument>()
.WithCtorArg("uri").EqualToAppSetting("XmlFile2")
.WithName("XPathDocument2");
});
}
możliwy duplikat [StructureMap: Jak zdefiniować domyślny konstruktor według kodu?] (Http://stackoverflow.com/questions/289512/structuremap-how-to-define-default-construktor-by-code) –
Zobacz [ http://stackoverflow.com/questions/289512/structuremap-how-to-define-default-constructor-by-code](http://stackoverflow.com/questions/289512/structuremap-how-to-define-default -konstruktor po kodzie) –