Каков наилучший способ решить следующую проблему?
foreach (Control control in this.Controls)
{
if (control is ComboBox || control is TextBox)
{
ComboBox controlCombobox = control as ComboBox;
TextBox controlTextbox = control as TextBox;
AutoCompleteMode value = AutoCompleteMode.None;
if (controlCombobox != null)
{
value = controlCombobox.AutoCompleteMode;
}
else if (controlTextbox != null)
{
value = controlTextbox.AutoCompleteMode;
}
// ...
}
}
Вы видите, что это достаточно сложно, чтобы получить свойство AutoCompleteMode. Вы можете предположить, что у меня есть либо ComboBox, либо TextBox.
Моя первая идея заключалась в том, чтобы использовать generic с несколькими типами для T, но кажется, что это невозможно в .NET:
public string GetAutoCompleteModeProperty<T>(T control) where T: ComboBox, TextBox // this does not work, of course
К сожалению, оба элемента управления не имеют общего базового класса.
Примечание. Это будет более общий вопрос, используемый с минимизированным примером. В моем случае я также хочу получить доступ к другим функциям AutoComplete * -proprties/которые также имеют общие элементы управления.
Спасибо за идеи!