我们使用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)'作为一个实例不是一个类型 –