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

c# – 隐藏基类的属性

发布时间:2020-12-16 00:20:42 所属栏目:百科 来源:网络整理
导读:我想要完成的是有两个类,非泛型和泛型. 我需要一个非泛型类,因为我打算插入这个类的对象并将它们插入List T 这是代码 // Non-genericpublic class Response{ public object Value { get; }}// Genericpublic class ResponseT : Response{ public T Value { g
我想要完成的是有两个类,非泛型和泛型.

我需要一个非泛型类,因为我打算插入这个类的对象并将它们插入List< T>

这是代码

// Non-generic
public class Response
{
    public object Value { get; }
}

// Generic
public class Response<T> : Response
{
    public T Value { get; set; }
}

我想要一个List< Response>,当我访问这个对象时,我得到Value属性作为对象.

但是当我将此对象作为泛型接收时,访问T Value属性并隐藏对象Value属性.

我希望明确,如果没有..请告诉我.

编辑:这是一个测验.因此,每个问题都有答案.例如,在MultipleChoiceQuestion中,它可以有几个答案A,B,C,D作为视图形状,或者可以是字符串或整数.

public abstract class Question
{
    public Question(string questionText)
    {
        this.QuestionText = questionText;
    }

    public string QuestionText { get; set; }
}

// Non-generic
public class Response
{
    public object Value { get; }
}

// Generic
public class Response<T> : Response
{
    public T Value { get; set; }
}

public class MathProblemQuestion : Question
{
    public Response Response { get; set; }
}

public class MultipleChoiseQuestion : Question
{
    public Response Response { get; set; }

    public IEnumerable<Response> PossibleResponses;

    ...
}

public class TrueOrFalse : Question
{
    ...
}

解决方法

我个人只是给他们不同的名字.它将使您的生活更简单,代码更清晰:

public abstract class Response
{
    public abstract object ObjectValue { get; }
}

public class Response<T> : Response
{
    public T Value { get; set; }

    public override object ObjectValue { get { return Value; } }
}

请注意,我已经将Response类抽象化了 – 否则很难看出它如何优雅地工作;如果Response有自己的Value存储,则可能设置为非T值.希望这个摘要对你来说不是问题.

(编辑:李大同)

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

    推荐文章
      热点阅读