J'utilise un exemple fictif pour cela. Dites, j'ai une classe Widget:Générique Parent Pour Générique Classe
abstract class Widget
{
Widget parent;
}
Maintenant, mes autres classes seraient dérivées de cette classe Widget, mais suppose que je veux mettre une contrainte dans la classe tout en définissant les types dérivés tels que seul un particulier "type" de widget peut être parent d'un type particulier de Widget. Par exemple, j'ai dérivé deux autres widgets de la classe Widget, WidgetParent et WidgetChild. Lors de la définition de la classe enfant, je souhaite définir le type de parent en tant que WidgetParent, afin que je ne doive pas taper cast le parent chaque fois que je l'utilise.
Précisément, ce que je l'aurais aimé faire est la suivante:
// This does not works!
class Widget<PType>: where PType: Widget
{
PType parent;
}
class WidgetParent<Widget>
{
public void Slap();
}
class WidgetChild<WidgetParent>
{
}
Alors que lorsque je veux accéder au parent de WidgetChild, au lieu de l'utiliser de cette façon:
WidgetParent wp = wc.parent as WidgetParent;
if(wp != null)
{
wp.Slap();
}
else throw FakeParentException();
I vouloir l'utiliser de cette façon (si je pouvais utiliser des génériques):
wc.parent.Slap();
Merci pour l'effort , chakrit. J'ai élaboré l'usage. – nullDev
Ok, je vois maintenant. Éditera quand je serai à la maison. – chakrit