Ich habe zwei Dienste, die eine XPathDocument
erfordern. Ich möchte in der Lage sein, benannte Instanzen von XPathDocumnet
für die Konfiguration der beiden Dienste zu definieren. Ich möchte auch in der Lage sein, zu sagen, welcher Konstruktor von XPathDocument
zu verwenden ist. Wenn ich versuche, eine Instanz von XPathDocument
zu bekommen, sagt es mir, dass es den verstopften Typ für XmlReader
nicht finden kann. Ich möchte den Konstruktor verwenden, der eine Zeichenfolge uri für die XML-Datei benötigt. Ich kann das nicht zur Arbeit bringen. Hier ist der Strukturierungskonfigurationscode.Erzählen Sie StructureMap, um einen bestimmten Konstruktor zu verwenden
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");
});
}
mögliche Duplikate von [StructureMap: Wie Standardkonstruktor von Code zu definieren?] (Http://stackoverflow.com/questions/289512/strucemapmap-how-to-define-default-constructor-by-code) –
Siehe [ http://StackOverflow.com/questions/289512/Structuremap-how-to-define-default-constructor-by-code](http://stackoverflow.com/questions/289512/structemap-how-to-define-default -Konstruktor nach Code) –