我們使用Unity依賴注入。我們有一個類需要傳遞給它的構造函數的類型。如何在使用Unity依賴注入時將類型作爲參數傳遞給構造函數
public interface ITest
{
}
public class Test : ITest
{
public Test(Type myType)
{
}
}
在容器boostrapper我們註冊我們的類型:
public static IUnityContainer Start()
{
IUnityContainer container = UnityInversionOfControlContainer.RegisterContainer();
container.RegisterType<ITest, Test>();
return container;
}
我們決心像這樣:
object actual = container.Resolve<ITest>(new ParameterOverride("myType", typeof(string)));
此提供以下錯誤:
Microsoft.Practices.Unity .ResolutionFailedException:依賴項的解析失敗,type =「ITest」,name =「(none)」。 發生異常時:解析時。 異常是:InvalidOperationException - 無法構造字符串類型。您必須配置容器以提供此值。
在異常時,該容器是:
解決測試,(無)(從Belastingdienst.Omvormers.Mapper.ITest映射,(無))構造試驗 解決參數 「的myType」( System.Type myType) 正在解析System.String,(無) ---> System.InvalidOperationException:無法構造String類型。您必須配置容器以提供此值。
看來,統一想通過容器來解析類型,並傳入一個類型的實例,但我確實需要類型。
想到任何人?
你的意思'container.Resolve ...'?它似乎不工作的參數類型'類型',我嘗試'字符串',它工作正常。可能是一個團結的錯誤。 –
Haukinger
嘗試註冊'myType'和'typeof(string)'作爲一個實例不是一個類型 –