C#覆盖基类集合类型

时间:2017-03-23 09:07:39

标签: c# abstract-class

我有一个带

的基类
     public abstract class BaseClass
    {
     ICollection<int> Numbers {get;set;}
    }

有没有办法得到以下结果?

    public abstract class SubClass : BaseClass
    {
     override ObservableCollection<int> Numbers {get;set;}
    }

所以子类有一个observablecollection或者我可以实现一个设计模式吗?

3 个答案:

答案 0 :(得分:6)

泛型可以帮助您实现类似的行为:

Controller.prototype.testPromise = function(callback){

    return new Promise(function(resolve, reject) {

        var count = 0;
        for (i = 0; i < 500000000; i++) {
            count++;
        }

      if(count) {
        resolve(count);
      } else {
        reject(count);
      }
    });

}

答案 1 :(得分:0)

你不能像那样覆盖它。

一种解决方案可能是创建一个具有不同名称的新属性,如下所示:

public abstract class SubClass : BaseClass
{
    public ObservableCollection<int> ObservableNumbers => (ObservableCollection<int>)Numbers;
}

或者如下:(如果你真的需要能够设置它)

public abstract class SubClass : BaseClass
{
    public ObservableCollection<int> ObservableNumbers
    {
        get { return (ObservableCollection<int>)Numbers; }
        set { Numbers = value; }
    }
}

不要忘记将Numbers财产公开或内部化!

答案 2 :(得分:0)

您可以尝试下面添加“新”关键字

public abstract class BaseClass
    {
        public virtual ICollection<int> Numbers { get; set; }
    }

    public abstract class SubClass : BaseClass
    {
        public new ObservableCollection<int> Numbers { get; set; }
    }