38

を必要とする 2 つのサービスがありますXPathDocumentXPathDocumnet2 つのサービスの構成で使用する名前付きインスタンスを定義できるようにしたいと考えています。また、どのコンストラクターを使用するかを StuctureMap に伝えたいと考えていXPathDocumentます。のインスタンスを取得しようとするとXPathDocument、 の差し込まれたタイプが見つからないことがわかりますXmlReader。xml ファイルの文字列 uri を必要とするコンストラクターを使用したいと考えています。私はこれを機能させることができないようです。StructureMap 構成コードは次のとおりです。

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

1 に答える 1

2

これを見てください。OfConcreteType<Service1>()つまり、に変更する必要がありますConstructedBy(() => new Service1());

于 2013-12-27T19:15:52.667 に答える