我試圖啓動一個類,期待在它的CTOR System.Type。IoC spring.net注入System.Type
在spring.net配置文件中是否有一種方法可以實現這一點,並且最好傳遞一個spring初始化對象的類型?
感謝,
Lihnid
我試圖啓動一個類,期待在它的CTOR System.Type。IoC spring.net注入System.Type
在spring.net配置文件中是否有一種方法可以實現這一點,並且最好傳遞一個spring初始化對象的類型?
感謝,
Lihnid
您可以使用表達式來注入類型:
<!-- use an expression to specify type -->
<constructor-arg type="System.Type, mscorlib"
expression="T(MyNameSpace.MySecondClass)" />
要獲得彈簧管理對象的類型,您可以使用expression="@(object-id-here)"
syntax to use a spring-managed object in your expression和簡單的調用GetType()
它:
<!-- inject the type of MySecondObject, configured elsewhere -->
<constructor-arg type="System.Type, mscorlib"
expression="@(MySecondObject).GetType()" />
這也適用於:
<constructor-arg name="argumentname" value="MyNamespace.MyType, MyAssembly"/>
使用VS2010外接智能感知: http://www.springframework.net/vsaddin/
不錯!我不知道這是可能的,沒有表達式 –
@bbaia:很高興知道。 spring.net是否將它委託給.NET的[TypeNameConverter](http://msdn.microsoft.com/en-us/library/system.configuration.typenameconverter.aspx)?如何在沒有註冊TypeConverter的情況下工作? 'System.Type'沒有用'TypeConverter(typeof(TypeNameConverter))'[根據MSDN](http://msdn.microsoft.com/en-us/library/system.type.aspx)修飾。 – Marijn
@Marijn:檢查Spring.Core.TypeConversion命名空間中的類「RuntimeTypeConverter」和「TypeConverterRegistry」。 – bbaia
以防萬一,如果有人想知道怎麼辦這與使用System.Type作爲字典鍵。
<object id="myDictionary" type="System.Collections.Generic.Dictionary<System.Type,string>">
<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>
我看到你接受了塞巴斯蒂安的回答。他的回答是正確的,但並不像你問的那樣給你一種春天管理的物體。我已經更新了我的答案,展示了一種更加清晰的方法。 – Marijn