我有一段时间没 sleep 了,所以这可能比我想象的要容易。
我有一个泛型类,大致是这样的:
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):
interface IReference<out T> where T : ApiResource {
T Value { get; }
}
然后你可以投 IReference<Anything>
至 IReference<object>
或 IReference<ApiResource>
.
关于c# - 将对象转换为泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16795750/