c# - 通用 T GetByID<K>(K ID_)

标签 c# entity-framework generics repository-pattern

我正在尝试使用 Entity Framework 实现通用存储库。

我的存储库定义为:

    public class GenericRepository<T> : IRepository<T> where T : class

我想添加一个通用的 GetByID,其中传入的 ID 类型也是通用的。我真的不希望我的业务逻辑告诉我类型是例如....

    _repository.GetByID<int>(123);

我想隐藏 tyoe 定义,但不知道在哪里或如何做。

Stackoverflow 上的大多数帖子似乎只是将其 ID 作为整数。我不希望这样,因为您的标识符并不总是整数!

关于这个问题有什么想法吗?

最佳答案

这是我做的

interface IRepository<TEntity, TKey> {
     TEntity GetById(TKey id);
}

然后我继承这个接口(interface)

class Person {
     int ID;
}
interface IPersonRepository : IRepository<Person, int> { ... }

这使得它对 DI/IoC 和单元测试也非常友好。

关于c# - 通用 T GetByID<K>(K ID_),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4479728/

相关文章:

嵌入到 .bat 文件中的 C# 源代码

c# - 在 Visual Studio 中使用 C# 和 ChromeDriver 进行 MS 测试的 Selenium WebDriver

typescript - 从键值对推断类型,其中值是函数签名?

c# - 以编程方式强制复制单个 Active Directory 对象

c# - 在 C# 中将 pdf 文件转换为文本

c# - EF Code First - 热切加载和过滤子类属性(继承)

c# - 在 Entity Framework 上实现业务逻辑

c# - 绑定(bind) UI 元素不通过 Itemsource 中的更改值刷新

c# - 为值和引用类型定义通用接口(interface)类型约束

java - 通用列表创建时出现问题