Tag: oop

将Generic 转换为Generic

我有一个基本WPF UserControl,它处理派生UserControls的一些常用function。 在任何派生的UserControl的代码隐藏中,我调用一个事件 private void SomeClick(object sender, RoutedEventArgs e) { HandleClick(sender); MyDataGrid.Items.Refresh(); } 在我的基础UserControl我做 public class BaseUserControl : UserControl { protected void HandleClick(object sender) { var vm = (BaseViewModel)DataContext; … } } 这会引发InvalidCastException,因为DataContext的类型为BaseViewModel但派生类型类似于BaseViewModel或BaseViewModel 。 我怎么能这样做?