我有這樣的代碼:使用類型,而不是特定的類
if (((Classes.ProductGroup)o).ToString().Contains(comboBox.Text))
return true;
else
return false;
現在我想不指定部分Classes.ProductGroup
。我想使它具有普遍性。
如何使用Type
對象替換零件Classes.ProductGroup
?
Type type = typeof(Classes.ProductGroup);
事情與此類似:
if (((type)o).ToString().Contains(comboBox.Text))
這可能嗎?
下面是完整的方法代碼:
private void FilterPGsinComboBox(object obj)
{
if (!Dispatcher.CheckAccess())
{
Dispatcher.Invoke(new FilterPGsinComboBoxDelegate(this.FilterPGsinComboBox),obj);
return;
}
Type type = ((Dictionary<ComboBox, Type>)obj).First().Value;
ComboBox comboBox = ((Dictionary<ComboBox, Type>)obj).First().Key;
comboBox.IsDropDownOpen = true;
CollectionView itemsViewOriginal = (CollectionView)CollectionViewSource.GetDefaultView(comboBox.ItemsSource);
itemsViewOriginal.Filter = ((o) =>
{
if (String.IsNullOrEmpty(comboBox.Text))
return true;
else
{
if (((Classes.ProductGroup)o).ToString().Contains(comboBox.Text))
return true;
else
return false;
}
});
itemsViewOriginal.Refresh();
}
所有對象都有'ToString()'。 cast是多餘的 – ASh
什麼是'o'並且請提供你想要實現的功能 –
使用[泛型](https://msdn.microsoft.com/en-us/library/512aeb7t.aspx) – dotctor