我最近遇到了一个通用接口的问题。我想创建一个接口列表,但通用接口并不容易。我可以像这样创建列表: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
作为返回类型。我不明白为什么。
答案 0 :(得分:0)
我认为你可以这样做:
public class ModelList : List<IModelCreator<IDataCollection>> { }
//And then use it like this
ModelList l = new ModelList();