Обратите внимание, что в C # 4 есть дополнительная поддержка отклонений, но она не применяется в случае List<T>
по разным причинам (имеет методы "in" и "out" и является классом).
Тем не менее, я думаю, что способ решить эту проблему заключается в следующем:
interface IState { // non-generic
object Value { get; } // or whatever `State<Thing>` needs
}
class State<T> : IState {
public T Value { get { ...} } // or whatever
object IState.Value { get { return Value; } }
}
и
List<IState> list; ...
, которые будут , а затем позволят вам добавить любойState<T>
.На самом деле он не использует большую часть T
, и для приведения значения от object
к T
потребуется приведение, но ... по крайней мере, оно будет работать.