将类型约束为 C# 中泛型类型的任何实例

本文关键字:泛型类型 任何 实例 类型 约束 | 更新日期: 2023-09-27 18:30:31

我想创建一个可用于多个数据访问系统的基本实体。泛型类型参数表示属性的类型。

public interface IEntity<T> {
    public T Id {get; set;}
}

我希望能够将此接口用作泛型类型约束,而无需在泛型方法中指定类型参数。

public void Read<T>(Expression<Func<T, bool>> expression) where T : IEntity<**any type**>

这可能吗?如果没有,还有什么替代方案?

将类型约束为 C# 中泛型类型的任何实例

你可以

这样做。 添加第二个泛型类型参数:

public void Read<T, U>(Expression<Func<T, bool>> expression) where T : IEntity<U>

对该类型参数使用约束,并在声明中指定这两种类型。这推动了关于TOther是什么的决定。

public void Read<T,TOther>(Expression<Func<T, bool>> expression) where T : IEntity<TOther>