加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将对象转换为通用类型

发布时间:2020-12-15 03:51:57 所属栏目:百科 来源:网络整理
导读:我一段时间没有睡觉,所以这可能比我想象的容易些. 我有一个通用类,或多或少这样: public class ReferenceT where T : APIResource //- APIResource is abstract btw{ private T _value = null; public T value { get { return _value; } }} 在其他地方,在自
我一段时间没有睡觉,所以这可能比我想象的容易些.

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

public class Reference<T> where T : APIResource //<- APIResource is abstract btw
{
    private T _value = null;
    public T value
    { 
        get { return _value; }
    }
}

在其他地方,在自定义序列化方法中,有人正在传递一个实际上是“参考”(<(something)>的实例的对象.我只想跳到“value”属性,每个Reference<>对象有,所以我想去:

string serialize(object o)
{
    return base.serialize( ((Reference<>) o).value );
}

当然,生活并不那么简单,因为编译器说:

使用通用类型“参考< T>”需要1个类型的参数

我该怎么做我想做的事情?

解决方法

您可以使用属性创建一个协变通用界面:
interface IReference<out T> where T : ApiResource {
    T Value { get; }
}

然后,您可以投射IReference< Anything>对象< object>或IReference< ApiResource&gt ;.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读