我已经有一段时间没有 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<>对象都具有的“value”属性,所以我想去:
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/

10-17 00:02