J'ai beaucoup traité ces derniers temps avec des classes abstraites qui utilisent des génériques. Tout cela est bien et bien parce que je tire beaucoup d'utilité de ces classes, mais maintenant ça fait du code plutôt moche. Par exemple:Traiter avec plusieurs génériques dans un appel de méthode
abstract class ClassBase<T>
{
T Property { get; set; }
}
class MyClass : ClassBase<string>
{
OtherClass PropertyDetail { get; set; }
}
Cette implémentation est pas du tout fou, sauf quand je veux faire référence à la classe abstraite d'une classe d'aide et je dois faire une liste des génériques juste pour faire référence à la classe mis en œuvre , comme ci-dessous.
class Helper
{
void HelpMe<C, T>(object Value)
where C : ClassBase<T>, new()
{
DoWork();
}
}
Ceci est juste un exemple apprivoisé, parce que j'ai une méthode appelle où la liste des clauses où finissent par être 5 ou 6 lignes de temps pour traiter toutes les données génériques. Ce que je voudrais vraiment faire est
class Helper
{
void HelpMe<C>(object Value)
where C : ClassBase, new()
{
DoWork();
}
}
mais il ne sera évidemment pas compilé. Je veux référencer ClassBase sans avoir à lui passer tout un tableau de classes génériques pour que la fonction fonctionne, mais je ne veux pas faire référence aux classes de plus haut niveau car il y en a une douzaine. Suis-je la victime de ma propre intelligence ou existe-t-il une avenue que je n'ai pas encore considérée?