我很好奇是否有可能像父抽象类那样创建我可以在其中定义一组特定方法但子类包含不同实体类型的抽象类?代码示例:
public abstract class BaseService
{
public abstract void Add();
public abstract void Delete();
public abstract void Update();
public abstract void Get();
}
也许可以做类似 public abstract List<'random type'> GetAll();
的事情
但在这里我想用特定于其每个子项的特定参数覆盖每个方法:
public class CategoryService : BaseService
{
public override void Add(){ }
public override void Delete(){ }
public override void Update(){ }
public override void Get(){ }
}
但是,在我的子类中,我希望我的 Get() 方法返回特定的 List<"of Type">(在本例中为类别)。此外,我可能想做 public override Add(int CategoryID)
而不是继承的 Add
来自 BaseService
.
这可能吗?想法?我只是疯了吗?还是我想让它变得比它需要的更复杂?我有大约 10 种不同的服务类型,我想确保从 BaseService
中获取这些通用方法。 .
提前致谢!
最佳答案
如果我理解正确的话,你可以这样做:
public abstract class BaseService<T>
{
public abstract T Get();
}
然后:
public class CategoryService : BaseService<Category>
{
public override Category Get(){ ... }
}
您不能覆盖方法并且在覆盖中有不同的签名,但您可以使用字典/哈希表或更花哨的东西将参数传递到 Add
方法。使用通用容器传递参数意味着您开始使用查询 模式,其中容器中的参数决定查询(仅供引用:-))。
关于c# - 是否可以为不同的类型创建一个通用的抽象父类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37483552/