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