c# - Interface inheritance without return type covariance -


let's have simple c# interface of following type

public interface itimeseriesdata  itimeseriesdata add(itimeseries timeseries) 

this interface represents contract set of time series data. simplicity, included single method, namely adding time series , obtaining new set of data corresponding addition (think of data immutable, when new time series added, original instance unchanged, , new set of time series data returned). have interface, represents contract classes containing time series data, enforced time series contain same number of elements.

public interface isquaretimeseriesdata  isquaretimeseriesdata add(itimeseries timeseries) 

now, ideally, i'd isquaretimeseriesdata itimeseriesdata. , return type covariance, write

public interface isquaretimeseriesdata : itimeseriesdata  isquaretimeseriesdata add(itimeseries timeseries) 

and since isquaretimeseriesdata itimeseriesdata, i'd have class implementing "isquaretimeseriesdata add(itimeseries timeseries)" method count implementing "itimeseriesdata add(itimeseries timeseries)". however, c# not have return type covariance, above solution not work.

is there elegant way out of this? currently, have method .astimeseriesdata() in isquaretimeseriesdata interface returns isquaretimeseriesdata itimeseriesdata. not particularly elegant, though.

you can hiding original interface add method, although far ideal. possible though make working solution out of though.

public interface itimeseriesdata {     itimeseriesdata add(itimeseries timeseries); }  public interface isquaretimeseriesdata : itimeseriesdata {     new isquaretimeseriesdata add(itimeseries timeseries); // hide original }  public class stsd : isquaretimeseriesdata {     public isquaretimeseriesdata add(itimeseries timeseries)     {         // implement here     }      itimeseriesdata itimeseriesdata.add(itimeseries timeseries)     {         return this.add(timeseries); // call overridden add method     } } 

Comments

Popular posts from this blog

javascript - How to get current YouTube IDs via iMacros? -

c# - Maintaining a program folder in program files out of date? -

emulation - Android map show my location didn't work -