Hallo,
ich versuche gerade eine generische Validierung von Werten zu realisieren.
In einem Konkreten Fall soll eine List(Of T) nach einem mitgegebenen String-Value suchen, der Name dieser Property ist aber vorher unklar (Es handelt sich hierbei um eine beliebige Property in einem Beliebigen mitgegebenen Typ).
Der Name der zu überprüfenden Property soll per String mitgegeben werden können.
Ich hatte schon öfters gelesen, das es irgendwo eine Methode GetPropertyByName gibt. Habe auch so etwas gefunden (IStereoType-Interface), aber msdn gibt so wenige Informationen darüber, das ich weder weis was es ist noch was es genau macht, es heißt nur, das es unter gewissen Umständen (unklar welche) nicht angewendet werden kann.
Ich vermute, es gibt irgendwelche Wege über Reflection, wisst ihr da was?
Oder würdet ihr gar sagen, das ich den Such-Algorythmus jeweils mit übergeben soll und dies einfacher wäre? (Stichwort Delegates / Lambdas)
Naja, Danke im Voraus für Feedback / Tipps / Lösungsansätze.
ich versuche gerade eine generische Validierung von Werten zu realisieren.
In einem Konkreten Fall soll eine List(Of T) nach einem mitgegebenen String-Value suchen, der Name dieser Property ist aber vorher unklar (Es handelt sich hierbei um eine beliebige Property in einem Beliebigen mitgegebenen Typ).
Der Name der zu überprüfenden Property soll per String mitgegeben werden können.
Ich hatte schon öfters gelesen, das es irgendwo eine Methode GetPropertyByName gibt. Habe auch so etwas gefunden (IStereoType-Interface), aber msdn gibt so wenige Informationen darüber, das ich weder weis was es ist noch was es genau macht, es heißt nur, das es unter gewissen Umständen (unklar welche) nicht angewendet werden kann.
Ich vermute, es gibt irgendwelche Wege über Reflection, wisst ihr da was?
Oder würdet ihr gar sagen, das ich den Such-Algorythmus jeweils mit übergeben soll und dies einfacher wäre? (Stichwort Delegates / Lambdas)
Naja, Danke im Voraus für Feedback / Tipps / Lösungsansätze.
Visual Basic-Quellcode
- Public Class UniqueNameRule(Of T)
- Implements IRule(Of String) 'Interface, welches Validate und SoftRule bereitstellt
- Public Property SoftRule As Boolean Implements IRule(Of String).SoftRule
- Public Property List As List(Of T)
- Public Property PropertyName As String
- Public Sub New(list As List(Of T), propertyName As String)
- Me.List = list
- Me.PropertyName = propertyName
- End Sub
- Public Function Validate(valueToValidate As String) As RuleResult Implements IRule(Of String).Validate
- '#################################################
- ' Hier müsste es irgendwie rein
- Dim elements = From element As T In List Where {MeineProperty} = valueToValidate
- '#################################################
- Return New RuleResult(elements.Count < 0, SoftRule, "Message")
- End Function
- End Class