Я не совсем уверен, как решить эту проблему, и моя текущая реализация неуклюжа. В моем классе есть универсальный метод, который применяет числовое значение к свойству Value поля со списком. Мне бы хотелось, чтобы этот метод работал для целых чисел, чисел с плавающей запятой, десятичных и двойных чисел. Внутренне это приведёт к десятичной дроби. Вот мой код в настоящее время:
private void UpdateValueFromComboBox<T>(ComboBox tSource, NumericUpDown tDest)
{
NamedKeyValuePair<String, T> tKV = tSource.SelectedItem as NamedKeyValuePair<String, T>;
if (tKV != null)
{
// Update the Control's value with what was saved
tDest.Value = Decimal.Parse(tKV.Value.ToString());
}
}
Я хочу избавиться от вызовов ToString () и Parse (). По сути, я хочу, чтобы задание было следующим:
tDest.Value = (Decimal) tKV.Value;
Но поскольку C # не знает, что такое или будет 'T', это выдает мне ошибку. Я получаю сообщение об ошибке «Невозможно преобразовать тип« Т »в« десятичный »». Есть ли способ указать, используя ключевое слово Where, что передаваемые значения являются числовыми ??