J'écris un wrapper pour le contrôle WinForms ComboBox qui va me permettre de remplir la liste déroulante avec une liste <T>, et a une propriété Selected qui retourne un élément de type T (ou null si rien de sélectionné).ComboBox générique avec propriétés nommées automatiquement
Plutôt que d'avoir une propriété Selected, j'aimerais qu'elle soit nommée en fonction du type générique automatiquement. Par exemple:
- MyDropDownList <utilisateur> aurait une propriété SelectedUser
- MyDropDownList < Département > aurait une propriété SelectedDepartment
- MyDropDownList < d'État > aurait une propriété SelectedState
Avec LINQ , Je peux créer des types anonymes pendant le groupement, comme ceci:
var usersByGender = users
.GroupBy(x => x.Gender)
.Select(group => new {Gender = group.Key, List = group.ToList()});
Ce qui se traduira par une liste de type anonyme généré contenant une propriété de genre et la liste <utilisateur> qui sont détectables par IntelliSense. La question est, puis-je en quelque sorte le faire avec des propriétés dans une classe générique?
EDIT: Je réalise maintenant que je demande essentiellement "method_missing" en C# 3.0, ce qui est probablement impossible. Je suis ouvert aux suggestions, cependant.
Souhaitez-vous générer un nom d'appel de propriété Selected à l'exécution, nommé d'après la classe d'élément dans la liste déroulante? Ou souhaitez-vous que cela change au moment de la conception? – ChrisBD
Il est actuellement caché au moment du design, mais j'aimerais pouvoir y accéder via le code. Ma solution actuelle avec juste la propriété "Selected" fonctionne très bien, je pense juste que le code lirait plus facilement s'il était "Selected" + typeof (T) .Name –