通用T GetByID <K>(K ID_)

ada*_*iko 4 c# generics entity-framework repository-pattern

我正在尝试使用实体框架实现通用存储库.

我的存储库定义为:

    public class GenericRepository<T> : IRepository<T> where T : class
Run Code Online (Sandbox Code Playgroud)

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

    _repository.GetByID<int>(123);
Run Code Online (Sandbox Code Playgroud)

我想隐藏tyoe定义,但无法弄清楚在哪里或如何做到这一点.

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

有关这个问题的任何想法?

Dan*_*ite 5

我这样做了

interface IRepository<TEntity, TKey> {
     TEntity GetById(TKey id);
}
Run Code Online (Sandbox Code Playgroud)

然后我继承了这个界面

class Person {
     int ID;
}
interface IPersonRepository : IRepository<Person, int> { ... }
Run Code Online (Sandbox Code Playgroud)

这使得DI/IoC和单元测试非常友好.