У меня есть класс, который имеет свойство универсального типа, как указано ниже. Тип T может быть любым числом (short, int, float ...)
public class EqualFilter <T> : Filter {
private T _value;
public override T Value {
get {
return _value;
}
set {
if (!EqualityComparer<T>.Default.Equals(_value, value)) {
_value = value;
RaiseFilteringChanged();
}
}
}
.....
}
Теперь у меня есть класс клиента, у которого есть строка "String", которую нужно передать указанному выше установщику. Теперь во время установки значения в указанном выше установщике тип T уже определен во время выполнения, и я могу получить этот тип как Type T в моем клиенте. Можно ли преобразовать строку в соответствующий тип, как указано в EqualFilter, в клиентской программе? Нечто подобное, что не работает
Type T = filter.getFilterType();
filter.Value = (T) myTextBox.Text;
Приведенный ниже код работает, но он будет включать if-else для всех типов, которые могут быть числовыми.
Type T = filter.getFilterType();
if (T == typeof(int)) {
filter.Value = Int32.Parse(myTextBox.Text);
} else if() {
....
}
Короче говоря, я не уверен, как лучше подойти к вопросу.