Nie spałem od jakiegoś czasu, więc prawdopodobnie jest to łatwiejsze niż myślę.Rzuć obiekt typowym typem
mam rodzajowe klasy, który jest mniej więcej tak:
public class Reference<T> where T : APIResource //<- APIResource is abstract btw
{
private T _value = null;
public T value
{
get { return _value; }
}
}
Gdzie indziej, w sposób niestandardowy serializacji, ktoś przechodzi w object
który jest faktycznie instancja Reference<(something)>
. Ja po prostu chcę, aby przejść do „wartości” własności, że każdy Reference<>
obiekt ma, więc chcę, aby przejść:
string serialize(object o)
{
return base.serialize(((Reference<>) o).value);
}
Oczywiście, życie nie jest takie proste, bo jak kompilator umieszcza go:
using the generic type "Reference<T>" requires 1 type arguments
Jak mogę zrobić to, co chcę zrobić?
Nie wiedziałem absolutnie nic o kowariantnych interfejsach generycznych, więc bardzo się cieszę, że zwróciłem się do SO. Musiałem odpowiednio zmodyfikować klasę ogólną: 'public class Reference: IReference gdzie T: APIResource {...}'. To pozwala mi odzyskać właściwość Value za pomocą '((IReference ) o) .Value' –
Alain