Hac*_*ese 9 c# generics constraints
我有两个通用的抽象类型:Entity
和Association
.
让我们说Entity
看起来像这样:
public class Entity<TId>
{
//...
}
Run Code Online (Sandbox Code Playgroud)
并且Association
看起来是这样的:
public class Association<TEntity, TEntity2>
{
//...
}
Run Code Online (Sandbox Code Playgroud)
如何约束关联,以便它们可以属于任何实体?
我可以通过以下方式完成它:
public class Association<TEntity, TId, TEntity2, TId2>
where TEntity : Entity<TId>
where TEntity2: Entity<TId2>
{
//...
}
Run Code Online (Sandbox Code Playgroud)
随着更多类型的衍生Association
,这变得非常繁琐,因为我必须继续传递TId和TId2.除了删除约束之外,还有更简单的方法吗?
Ada*_*son 11
通常通过让您的泛型类(Entity<TId>
在本例中)继承自公共非泛型类来解决此问题.
public abstract class EntityBase
{
}
public class Entity<TId> : EntityBase
{
}
Run Code Online (Sandbox Code Playgroud)
这将允许您:
public class Association<TEntity, TEntity2>
where TEntity : EntityBase
where TEntity2 : EntityBase
{
}
Run Code Online (Sandbox Code Playgroud)
编辑
如果让它们从公共类继承是一个问题,那么这也可以通过接口轻松完成.
归档时间: |
|
查看次数: |
411 次 |
最近记录: |