我已经有一段时间没有睡觉了,所以这可能比我想象的要容易。
我有一个通用类或多或少是这样的:
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
我怎样才能做我想做的事?
您可以使用以下属性创建协变通用接口:
interface IReference<out T> where T : ApiResource {
T Value { get; }
}
然后您可以投射IReference<Anything>
to IReference<object>
or IReference<ApiResource>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)