2017-09-01 32 views
0

我進入統一的8個小時,並且已經計算出了一些內容,但是我無法找到與此相關的角度。我有一個IResourceManager統一 - 在其他已解決的類型中使用已解決的類型作爲參數

public interface IResourceManager 
{ 
    ILogger Logger { get; set; } 
    string Path { get; set; } 
} 

和相應的類型:

public class ResourceManager : IResourceManager 
{ 
    public ResourceManager(ILogger logger, string path) 
    { 
     Logger = logger; 
     Path = path; 
    } 
    public ILogger Logger { get; set; } 
    public string Path { get; set; } 
} 

Futhermore

public class Logger : ILogger 
{ } 

最後

public ResourceManagerController(ILogger logger, IResourceManager imageResourceManager) 
{} 

我想表現的記錄器和ResourceMa非常喜歡單身。只要IResourceManager中沒有ILogger,我就可以繼續工作,但我一直在收到「無默認構造函數」異常。

到目前爲止,我有:

public static void Register(HttpConfiguration config) 
{ 
    var container = new UnityContainer(); 

    container.RegisterType<ILogger, Logger>("DefaultLogger", new ContainerControlledLifetimeManager()); 

    container.RegisterType<IResourceManager, ResourceManager>("imageResourceManager", new ContainerControlledLifetimeManager(), 
     new InjectionConstructor(new ResolvedParameter<ILogger>("DefaultLogger"), "basePath")); 

    config.DependencyResolver = new UnityResolver(container); 

    // Web API routes ... 
} 

我怎麼都讓ResourceManagerController IST的成功實例化和兩LoggerResourceManager作爲單身人士註冊我的類型?

回答

0

如果你想註冊一個記錄器作爲默認使用,你不能命名註冊。 如果你想要所有命名的註冊,讓統一注入一個數組。

要麼...

container.RegisterType<ILogger, Logger>(new ContainerControlledLifetimeManager()); 
container.RegisterType<IResourceManager, ResourceManager>(new ContainerControlledLifetimeManager(), new InjectionConstructor(new ResolvedParameter<ILogger>(), "basePath")); 

public ResourceManagerController(ILogger logger, IResourceManager imageResourceManager) 
{} 

或...

container.RegisterType<ILogger, Logger>(new ContainerControlledLifetimeManager()); 
container.RegisterType<IResourceManager, ResourceManager>("imageResourceManager", new ContainerControlledLifetimeManager(), new InjectionConstructor(new ResolvedParameter<ILogger>(), "basePath")); 

public ResourceManagerController(ILogger logger, IResourceManager[] allResourceManagers) 
{} 
相關問題