IoC spring.net впрыскивая System.Type - PullRequest
       28

IoC spring.net впрыскивая System.Type

1 голос
/ 08 декабря 2011

Я пытаюсь инициировать класс, который ожидает System.Type в своем CTOR.

Есть ли способ в конфигурационном файле spring.net, чтобы выполнить это, и предпочтительно передать тип инициализированного пружиной объекта?

Спасибо

Lihnid

Ответы [ 4 ]

4 голосов
/ 09 декабря 2011

Это также работает:

<constructor-arg name="argumentname" value="MyNamespace.MyType, MyAssembly"/>

Используйте VS2010 Add-In для intellisense: http://www.springframework.net/vsaddin/

3 голосов
/ 09 декабря 2011

Вы можете использовать выражение для вставки типа:

<!-- use an expression to specify type -->
<constructor-arg type="System.Type, mscorlib" 
                 expression="T(MyNameSpace.MySecondClass)" />

Чтобы получить тип объекта с пружинным управлением, вы можете использовать синтаксис expression="@(object-id-here)" , чтобы использовать пружинный объектобъект в вашем выражении и просто вызовите GetType() на нем:

<!-- inject the type of MySecondObject, configured elsewhere -->
<constructor-arg type="System.Type, mscorlib" 
                 expression="@(MySecondObject).GetType()" />
3 голосов
/ 09 декабря 2011

Я думаю, что это должно сделать это:

<constructor-arg name="argumentname" expression="T(namespace.to.my.type, assemblyname)" />
0 голосов
/ 06 октября 2015

На всякий случай, если кому-то интересно, как это сделать, используя System.Type в качестве словарного ключа.

<object id="myDictionary" type="System.Collections.Generic.Dictionary&lt;System.Type,string&gt;">
    <constructor-arg name="dictionary">
        <dictionary key-type="System.Type" value-type="string">
            <entry value="myStringValue">
                <key>
                    <expression value="T(namespace.to.MyClassType)"></expression>
                </key>
            </entry>
        </dictionary>
    </constructor-arg>
</object>
...