【发布时间】:2018-04-09 23:01:03
【问题描述】:
是否可以让抽象基类强制其派生类使用泛型实现特定方法,同时仍然能够在其他地方使用抽象基类?这就是我的意思:
public abstract class BaseFieldValue<ToutputType,TinputType>
{
public abstract ToutputType DoStuff(TinputType input);
}
public class StringField:BaseFieldValue<string,string>
{
public string StringValue { get; set; }
public override string DoStuff(string input)
{
//Custom implementation for this class
}
}
public class Project
{
public string ProjectName { get; set; }
public List<BaseFieldValue> ProjectFields {get;set;} //ERROR
}
BaseFieldValue 的继承 -> StringField 编译得很好,但是当我尝试在 Project 上使用 List<BaseFieldValue> 时,它不喜欢这种语法,因为它想要定义泛型类型。我正在尝试做的事情是可能的还是有更好的方法?
我目前正在所有这些派生类上实现一个接口,但这迫使我记住它需要在每个派生类上继续。我希望对任何派生自BaseFieldValue 的类强制执行通用合同。
【问题讨论】:
标签: c# generics abstract-class