我還沒有睡過一陣子,所以這可能比我想象的要容易。將對象投射到通用類型
我有一個泛型類或多或少這樣的:
public class Reference<T> where T : APIResource //<- APIResource is abstract btw
{
private T _value = null;
public T value
{
get { return _value; }
}
}
其他地方,在一個自定義的序列化方法,有人正在傳遞一個object
,實際上是Reference<(something)>
一個實例。我只是想跳到每個Reference<>
對象具有「值」屬性,所以我想去的地方:
string serialize(object o)
{
return base.serialize(((Reference<>) o).value);
}
當然,生活不是那麼簡單的,因爲當編譯器所言:
using the generic type "Reference<T>" requires 1 type arguments
我該怎麼做我想做的事?
我對協變通用接口一無所知,所以我很高興我轉向了SO。我必須相應地修改泛型類:'public class Reference:IReference where T:APIResource {...}'。這允許我通過'((IReference )o).Value' –
Alain