c# - 我可以有多个类约束而不将约束设置为 C# 中的“类”类型吗
问题描述
我有这个类,它是我的规范模式的一部分。按照这个链接
public class SpecificationEvaluator<TEntity>
where TEntity : BaseEntity
BaseEntity 仅包含 id
前任。
public class BaseEntity
{
public int Id { get; set; }
}
这适用于我所有继承“BaseEntity”的实体
前任。
Product : BaseEntity
Invoice : BaseEntity
Message : BaseEntity
现在我想在我的“用户”实体上使用规范模式,这样我就可以提供规范/条件并获取用户列表。
但我的问题是我的项目“用户”实体没有继承“BaseEntity”,它继承了“IdentityUser”
前任。
public class User : IdentityUser<int>
{
}
我知道我不能有多个类作为约束,但我可以有多个接口。
我知道我可以将约束设置为“类”
前任。
public class SpecificationEvaluator<TEntity>
where TEntity : class
{
}
但这不是有点违背了创建特定约束的目的吗?
问题- 我可以实施另一种解决方案来同时将“BaseEntity”和“User”作为约束吗?
解决方案
在我看来,您可能必须这样做:
public interface IIdentityUser<T>
{
T Id { get; set; }
}
public class SpecificationEvaluator<TEntity, T>
where TEntity : IIdentityUser<T>
{ }
public class BaseEntity : IIdentityUser<int>
{
public int Id { get; set; }
}
public class Product : BaseEntity { }
public class Invoice : BaseEntity { }
public class Message : BaseEntity { }
public class IdentityUser<T> : IIdentityUser<T>
{
public T Id { get; set; }
}
public class User : IdentityUser<int>
{
}