c# - 其中 Generic T 是抽象类的实现
问题描述
给定以下类和层次结构:
public abstract class AbsractClass<T>
{
public T Id { get; private set; }
}
public class ImplementationA : AbsractClass<Guid> { }
public class ImplementationB : AbsractClass<int> { }
我应该在where子句/约束中使用什么约束来指定泛型 T 必须是 AbsractClass 的实现。这意味着实体将接受实施A 或实施B。
public abstract class Entity<T> // where : T ?
{
}
这是可能的还是我应该使用接口来代替?
解决方案
您需要添加两个通用参数才能使其工作:
public abstract class Entity<T, TKey> where T : AbstractClass<TKey>
{
}
通用接口的行为方式相同。
推荐阅读
- .net - 是否可以使用 Newtonsoft.Json 创建无内容类?
- python - PyInstaller exe文件可以分发吗?
- python - XML特定行配对python
- c# - Xamarin C# - 如何将 blob 存储帐户名称和密钥连接到首选项?
- java - 使用 Eclipse 导入 Maven 子项目问题
- azure - Xml 到 Json 液体模板停止在 Azure 逻辑应用上工作
- c# - 在这种情况下处理异常的最佳方法是什么
- selenium - 无法使用 IE11 和 Selenium 使用 Python 检索 page_source
- django - Django + Stripe,如何在 Stripe 结帐页面中添加地址字段,
- r - 循环拆分大数据框并在 R 中写入多个 CSV 文件