Нет, если у вас нет универсального базового типа ValuePair
с ValuePair<T> : ValuePair
(он также будет работать для интерфейса) или используйте List<object>
. На самом деле это работает разумно:
public abstract class ValuePair
{
public string Name { get; set; }
public object Value
{
get { return GetValue(); }
set { SetValue(value); }
}
protected abstract object GetValue();
protected abstract void SetValue(object value);
}
public class ValuePair<T> : ValuePair
{
protected override object GetValue() { return Value; }
protected override void SetValue(object value) { Value = (T)value; }
public new T Value { get; set; }
}