0
我不知道为什么以下不起作用。 StructureMap告诉我没有为SomeClassWithDependencies定义的默认依赖关系... um ...依赖关系。任何人都可以对此有所了解吗?我想通过基于命名实例的整个依赖树来构造对象。我吠叫错了树吗?StructureMap和命名实例
public class Program
{
static void Main(string[] args)
{
ObjectFactory.Initialize(x=>x.AddRegistry(new MyRegistry()));
ISomeClassWithDependencies someClassWithDependencies = ObjectFactory.GetNamedInstance<ISomeClassWithDependencies>("name1");
}
}
public interface ISomeClassWithDependencies
{
}
public class SomeClassWithDependencies : ISomeClassWithDependencies
{
public IEnumerable<IValidator> Validators { get; private set; }
public SomeClassWithDependencies(IEnumerable<IValidator> type1s)
{
Validators = type1s;
}
}
public class MyRegistry : Registry
{
public MyRegistry()
{
ForRequestedType<ISomeClassWithDependencies>().AddInstances(
x => x.Is.OfConcreteType<SomeClassWithDependencies>().WithName("name1"));
ForRequestedType<IEnumerable<IValidator>>().AddInstances(x=>x.ConstructedBy(BuildValidators).WithName("name1"));
ForRequestedType<IEnumerable<IValidator>>().AddInstances(x => x.ConstructedBy(BuildValidators2).WithName("name2"));
}
public IEnumerable<IValidator> BuildValidators()
{
var validatorOne = ObjectFactory.GetInstance<Validator1>();
var validatorTwo = ObjectFactory.GetInstance<Validator2>();
return new List<IValidator> { validatorOne, validatorTwo };
}
public IEnumerable<IValidator> BuildValidators2()
{
var validatorOne = ObjectFactory.GetInstance<Validator1>();
return new List<IValidator> { validatorOne };
}
}