将对象转换为泛型类型

2024-04-29

我已经有一段时间没有睡觉了,所以这可能比我想象的要容易。

我有一个通用类或多或少是这样的:

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(使用前将#替换为@)

将对象转换为泛型类型 的相关文章

随机推荐