2010-01-11 7 views
1

Existe-t-il un moyen de transmettre un type de classe comme valeur dans Spring.NET?Transmettre le type d'une classe comme valeur dans Spring.NET

Mon Dictionnaire ressemble à ceci:

private Dictionary<int, Type> ContentItemTypes { get; set; } 

Dans le code I serait initialiser comme:

registry.addContentItemType(0, typeof(ContentItem)); 

Comment faites-vous cela dans Spring.NET. Jusqu'à présent, j'ai ceci:

<object id="ContentItemTypeRegistry" 
     type="Edu3.DomainModel.Framework.Model.Registry.ContentItemTypeRegistry, Edu3.DomainModel.Framework" 
     factory-method="GetInstance"> 
    <property name="ContentItemTypes"> 
    <dictionary key-type="int" value-type="System.Type"> 
     <entry key="0"> 
     <value type="System.Type">Edu3.DomainModel.Framework.Model.ContentItem</value> 
     </entry> 
    </dictionary> 
    </property> 
</object> 

Est-ce correct?

Répondre

5

Ou encore plus court.

<object id="ContentItemTypeRegistry" 
type="Edu3.DomainModel.Framework.Model.Registry.ContentItemTypeRegistry, Edu3.DomainModel.Framework" 
factory-method="GetInstance"> 
    <property name="ContentItemTypes"> 
     <dictionary key-type="int" value-type="System.Type"> 
     <entry key="0" expression="T(Edu3.DomainModel.Framework.Model.ContentItem)" ></entry> 
     </dictionary> 
    </property> 
    </object> 
+0

Grande, vraiment besoin de vérifier ces expressions. THX. –

1

peut-être:

<object id="ContentItemTypeRegistry" 
     type="Edu3.DomainModel.Framework.Model.Registry.ContentItemTypeRegistry, Edu3.DomainModel.Framework" 
     factory-method="GetInstance"> 
    <property name="ContentItemTypes"> 
     <dictionary key-type="int" value-type="System.Type"> 
     <entry key="0" value-ref="ContentItemType" ></entry> 
     </dictionary> 
    </property> 
    </object> 

    <object id="ContentItemType" type="System.Type, System" factory-method="GetType" singleton="false"> 
    <constructor-arg value="Edu3.DomainModel.Framework.Model.ContentItem" /> 
    </object>