接口继承接口但不覆盖方法

时间:2017-11-01 13:14:29

标签: c# generics interface

我最近遇到了一个通用接口的问题。我想创建一个接口列表,但通用接口并不容易。我可以像这样创建列表:new List<IModelCreator<IDataCollection>>();但我认为这看起来很难看。

所以现在我有2个接口。一个有通用,一个没有。以下是我现在使用的接口:

public interface IModelCreator
{
  IDataCollection GetModelFromPath(string path); 
}

public interface IModelCreator<T>: IModelCreator where T : IDataCollection
{
  new T GetModelFromPath(string path);
}

IModelCreator是一个将文件路径转换为模型的类,T是它将变成的模型。所以我现在在课堂上使用它,我得到了这个:

public abstract T GetModelFromPath(string path);

IDataCollection IModelCreator.GetModelFromPath(string path)
{
  return GetModelFromPath(path);
}

(我把它作为摘要)。但是,有没有办法让这只1方法而不是2但具有相同的功能?

我也尝试过只使用非通用接口。然后我有一个这样的抽象类:

public abstract class DocumentConverterCreatorBase<T>: IModelCreator where T: IDataCollection

但后来我无法使用我的通用T作为返回类型。我不明白为什么。

1 个答案:

答案 0 :(得分:0)

我认为你可以这样做:

public class ModelList : List<IModelCreator<IDataCollection>> { }

//And then use it like this
ModelList  l = new ModelList();