Question: I have a base class with

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

```

IS there a way of getting the below result?

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

```

So the subclass has an observablecollection or is there a design pattern I could implement?

Answer: 
Generics can help you achieve similar behavior:

```
public abstract class BaseClass<T> where T : ICollection<int>
{
    public T Numbers { get; set; }
}

public abstract class SubClass : BaseClass<ObservableCollection<int>>
{

}

```
You cannot override it like that.

One solution might be creating a new property with a different name as followed:

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

```

Or as followed: (if you really need to be able to set it)

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

```

And don't forget to make the `Numbers` property public or internal!