是否有可能在Unity中绑定一个结构到一个接口

本文关键字:一个 结构 接口 有可能 是否 Unity 绑定 | 更新日期: 2023-09-27 18:05:02

我想配置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))

为什么?

是否有可能在Unity中绑定一个结构到一个接口

问题是你试图使用Unity来构建一个结构;因为struct是值类型Activator。CreateInstance在尝试创建它时将会吹块(因为接口)。

例如:

 var item = Activator.CreateInstance<Test>();

将抛出一个异常"不能创建接口的实例"。在内部,Unity可能会使用Activator。CreateInstance在链的某个地方(我已经浏览了Unity的代码plex一段时间了),这就是它将消亡的地方。

我建议改成类实现而不是结构体。

Unity只支持类绑定。