Nous avons un DAL que nous utilisons avec NHibernate.Search
, donc les classes qui ont besoin d'être indexées sont décorées avec un attribut Indexed(Index:="ClassName")
, et chaque propriété qui doit être indexée a un attribut Field(Index:=Index.Tokenized, Store:=Store.No)
. Quand on veut que l'index descende des objets spéciaux, il y a l'attribut IndexedEmbedded()
Comment récupérer le type générique utilisé dans un IEnumerable générique dans .net?
Afin d'auto-documenter notre hiérarchie d'indexation, j'ai construit un simple analyseur qui parcourt l'ensemble DAL, récupère toute classe marquée comme indexable et obtient les propriétés qui sont indexables ou dont le type est disponible pour l'exploration. Quand le type de la propriété est déclaré disponible pour l'exploration, je pousse ce type dans la file d'attente et je le traite aussi.
Le problème est que parmi les classes que vous pouvez explorer, certaines sont elles-mêmes contenues dans des collections génériques IEnumerable. J'aimerais obtenir le type utilisé pour la collection (habituellement ISet) pour l'analyser aussi.
Alors, quel est le moyen d'obtenir le type interne d'une collection?
Private m_TheMysteriousList As ISet(Of ThisClass)
<IndexedEmbedded()> _
Public Overridable Property GetToIt() As ISet(Of ThisClass)
Get
Return m_TheMysteriousList
End Get
Set(ByVal value As ISet(Of ThisClass))
m_TheMysteriousList = value
End Set
End Property
Comment puis-je obtenir à ThisClass
quand j'ai le PropertyInfo
pour GetToIt
?
sans défaut; le GetgenericArguments était en effet où je cherchais la solution, mais je n'aurais pas eu l'idée de la chercher dans les interfaces. Merci – samy