Il existe deux UserControls différents partageant certaines propriétés communes. Ce que je voudrais faire est de basculer entre ces deux basés sur un drapeau externe.Commutateur UserControl
UserControl u1, u2;
if(flag)
{
u1 = u1 as ControlType1;
u2 = u2 as ControlType1;
}
else
{
u1 = u1 as ControlType2;
u2 = u2 as ControlType2;
}
SomeMethod(u1.SelectedItemName, u2.SelectedItemName);
Depuis UserControl ne dispose pas d'une propriété appelée « SelectedItemName », le code ne jetterait erreur. Ce que j'ai fait actuellement est, j'ai ajouté une méthode d'extension sur UserControl qui obtient le "SelectedItemName" using la réflexion, et j'obtiens la valeur en appelant u1.SelectedItemName() au lieu de u1.SelectedItemName;
Ma question est ce qui est un moyen facile de résoudre ce problème sans utiliser d'extension/peut-être la bonne façon. Notez que je ne veux pas répéter SomeMethod (a, b) dans l'instruction if.
Si 'u1' est défini comme le type' UserControl', alors quel est le point de dire 'u1 = u1 comme ControlType'? – mellamokb