gpt4 book ai didi

c# - 如何指定通用类型标识符类型(用于数据库查询)以及通用类型

转载 作者:行者123 更新时间:2023-11-30 22:47:20 24 4
gpt4 key购买 nike

在决定采用业务线存储库之前,我正在考虑实现每个对象的存储库(例如,个人存储库、状态存储库等),但我仍然对传递 ID(标识符)有疑问使用通用类型。

简而言之,一个人可能有一个 GUID 标识符,一个州/县可能有一个 int 标识符,等等。考虑到这一点,我如何传递一个指定 ID 的类型,呃,泛型的类型被传入?

这是我对界面的尝试:

public interface IRepository<T, TID> where T : class where TID : Type
{
T Get(TID id);
IList<T> GetAll();
void Update(T entity);
void Insert(T entity);
void Delete(TID id);
}

您可以看到 T 是类(Person、State 等),我的意图是让 TID 成为用于标识符的类型,即查看 T Get(TID id)。

这会导致编译错误:“类型 'string' 不能用作泛型类型或方法 'DumpWebApp.IRepository' 中的类型参数 'TID'。没有从 'string' 到 ' 的隐式引用转换系统.类型'。”

另一种方法是将实际元素传递给 Get 和 Delete 方法,我想,但这似乎有点笨拙。

感谢您的任何建议 - 顺便说一句,GetAll() 可以接受返回 IList 吗?为什么不是 IQueryable 或 T[]?

迈克·K。

最佳答案

只需删除 where TID : Type 约束。这应该可以解决问题。

关于c# - 如何指定通用类型标识符类型(用于数据库查询)以及通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2272924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com