c# - विशिष्ट निर्माता का उपयोग करने के लिए StructureMap को बताएं



xmlreader xpathdocument (1)

मेरे पास दो सेवाएं हैं जिनकी आवश्यकता है XPathDocument मैं दो सेवाओं के विन्यास में उपयोग करने के लिए XPathDocumnet नामित उदाहरणों को परिभाषित करने में सक्षम होना चाहता हूं। मैं यह भी StuctureMap जो उपयोग करने के लिए XPathDocument निर्माता बता सकते हैं सक्षम होना चाहता हूँ। जब मैं XPathDocument का एक उदाहरण प्राप्त करने की कोशिश करता हूं तो यह मुझे बताता है कि उसे XmlReader लिए प्लग किए गए प्रकार नहीं मिल सकता है। मैं कन्स्ट्रक्टर का उपयोग करना चाहता हूं जिसके लिए xml फ़ाइल के लिए स्ट्रिंग यूरी की आवश्यकता होती है। मुझे यह काम करने के लिए प्रतीत नहीं हो सकता यहां स्ट्रक्चरैप कॉन्फ़िगरेशन कोड है I

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");
    });
}

इसे देखो। संक्षेप में, आपको OfConcreteType<Service1>() को परिवर्तित करने की आवश्यकता है ConstructedBy(() => new Service1());





xpathdocument