我有一种过滤/搜索方法,现在是为每个Windows Form
提供搜索的方法编写的。我正在尝试在基类中创建一个通用方法,这样我就可以避免大量重复代码。
这是我要修改的原始代码:
private void LoadData()
{
GridFilter filter = new GridFilter();
filter.AddRule(dgvColDescription.DataPropertyName, txtDescription.Text);
if (cboColor.SelectedIndex != -1)
{
filter.AddRule(dgvColMaterialColorId.DataPropertyName, cboColor.SelectedValue.ToString());
}
...
//a lot more of this filter.AddRule stuff
...
}
我认为这里有两件事——实例的需要GridFilter
和我需要使用的两种类型的控件。
话虽如此,这是我对通用方法的尝试:
protected virtual void AddFilterRules<T>(Control ctrl, String str) where T : GridFilter
{
T filter;
if (ctrl is ComboBox)
{
if ((ctrl as ComboBox).SelectedIndex != -1)
{
filter.AddRule(/*dgvColMaterialColorId.DataPropertyName*/ str, (ctrl as ComboBox).SelectedValue.ToString());
}
}
if (ctrl is TextBox)
{
filter.AddRule(/*dgvColCode.DataPropertyName*/str, ctrl.Text);
}
}
有一些评论,因为我仍然不确定是否可以将评论部分作为字符串传递,但对我来说更大的问题是我从IDE
aboutfilter
变量中得到的错误是:
使用未分配的局部变量“过滤器”
毕竟有可能用它制作一个通用方法吗?我该怎么做?