Можно ли привязать структуру к интерфейсу в Unity? - PullRequest
0 голосов
/ 11 августа 2011

Я хочу настроить 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))

Почему?

Ответы [ 2 ]

0 голосов
/ 15 августа 2011
0 голосов
/ 11 августа 2011

Проблема в том, что вы пытаетесь использовать Unity для создания структуры;Так как структура является типом значения, Activator.CreateInstance собирается создать фрагменты при попытке ее создания (из-за интерфейса).

Например:

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

Будет выдано исключение «Не удается создать экземпляр интерфейса».Внутренне, Unity, вероятно, использует Activator.CreateInstance где-то вниз по цепочке (я уже некоторое время просматривал кодовое сплетение Unity), и именно здесь он умрет.

Я бы предложил перейти к реализации класса вместо структуры.

...