最簡單的方法是使用工廠,因爲ASP.NET Core IoC容器不支持命名依賴性或使用支持它的第三方IoC容器。
public class FileContainerFactory : IFileContainerFactory
{
private readonly IServiceProvider provider;
public class FileContainerFactory(IServiceProvider provider)
{
this.provider = provider;
}
public IFileContainer CreateFileSystemContainer()
{
// resolve it via built in IoC
return provider.GetService<FsFileContainer>();
}
public IFileContainer CreateFtpContainer()
{
// resolve it via built in IoC
return provider.GetService<FtpFileContainer>();
}
}
然後將IFileContainerFactory
注入您的控制器。
另一種方法是用一個標記接口來標記你的接口和寄存器/在Startup.cs
services.AddTransient<IFsFileContainer, IFileContainer>();
services.AddTransient<IFtpFileContainer, IFileContainer>();
請注入這些
,不使用MVC6標籤了。它適用於基於舊webstack(MVC5)的ASP.NET MVC的未來版本。 ASP.NET Core是一個基於.NET Core的全新且不兼容的可移植版本。使用[tag:asp.net-core-mvc]和/或[tag:asp.net-core]標籤代替,您的問題更有可能由可以幫助您解決問題的人員找到。其次,不要再使用dnx,它不再被開發。新版本僅適用於https://www.microsoft.com/net/core#windows中的dotnet-cli工具鏈。儘快升級到1.0 RTM – Tseng