有两个不同的用户控件共享一些公共属性。我想做的是根据外部标志在这两者之间切换。
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);
由于 UserControl 没有名为“SelectedItemName”的属性,因此代码不会引发错误。
我目前所做的是,我在 UserControl 上添加了一个扩展方法,该方法使用反射获取“SelectedItemName”,并通过调用 u1.SelectedItemName() 而不是 u1.SelectedItemName; 来获取值。
我的问题是什么是一种简单的方法来解决这个问题而不使用扩展/也许是正确的方法。请注意,我不想在 if 语句中重复 SomeMethod(a,b) 。