我希望配置Unity将结构(例如ITest
)解析为结构,例如struct Test
。到目前为止,我有下一个:
<unity>
<containers>
<container>
<types>
<type
type="my.ITest, asm"
mapTo="my.Test, asm">
</type>
</types>
</container>
</containers>
</unity>
但是我得到了下一个错误:
Resolution of the dependency failed, type = "my.ITest", name = "(none)".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The type Test cannot be constructed. You must configure the container to supply this value.
At the time of the exception, the container was:
Resolving my.Test,(none) (mapped from my.ITest,(none))
为什么?
答案 0 :(得分:0)
问题是您正在尝试使用Unity构建结构体;因为struct是一个值类型,Activator.CreateInstance在尝试创建它时会打破块(因为接口)。
例如:
var item = Activator.CreateInstance<Test>();
会抛出异常“无法创建接口的实例”。在内部,Unity可能在链的某个地方使用Activator.CreateInstance(我现在已经查看了Unity的代码plex一段时间了),这就是它将死的地方。
我建议更改为类实现而不是结构。
答案 1 :(得分:0)