告诉StructureMap使用特定的构造函数

我有两个需要XPathDocument服务。 我希望能够定义XPathDocumnet命名实例以用于两个服务的configuration。 我也希望能够告诉StuctureMap使用XPathDocument哪个构造函数。 当我尝试获取XPathDocument的实例时,它告诉我它无法findXmlReader的插件types。 我想使用需要一个stringuri的构造函数的XML文件。 我似乎无法得到这个工作。 这是StructureMapconfiguration代码。

 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());