public interface IProvider
{
void Load(int id);
}
public class Provider1 : IProvider
{
public void Load(int id) {}
}
public class Provider2 : IProvider
{
public void Load(int id) {}
}
public interface IService
{
void Load(int id);
}
public class Service : IService
{
IProvider provider;
public Service(IProvider provider) { this.provider=provider; }
public void Load(int id) { provider.Load(id); }
}
和我登記他們StructureMap這樣的:
For<IService>().Use<Service>().Named("core");
For<IProvider>().Use<Provider1>().Named("core");
For<IService>().Use<Service>().Named("gen");
For<IProvider>().Use<Provider2>().Named("gen");
但是當我試圖通過
var service1 = ObjectFactory.GetNamedInstance<IService>("core");
var service2 = ObjectFactory.GetNamedInstance<IService>("gen");
因此,在這兩種情況下獲得服務IProvider實例化給Provider2,爲什麼?
我預計第一種情況的IProvider將實例化到Provider1 和第二種情況,以Provider2之間
那麼,如何我需要爲了得到我想要的東西登記呢?