c# - 与泛型打结

标签 c# generics

我有以下域对象:

public class DomainObject<T,TRepo> 
  where T : DomainObject<T>
  where TRepo : IRepository<T>
{
      public static TRepo Repository { get;private set; }
}

存储库接口(interface):

public interface IRepository<T> //where T : DomainObject<T> // The catch 22
{
    void Save(T domainObject);
}

2 的实现:

public class User : DomainObject<User,MyRepository>
{
    public string Name { get;private set;}
}

public class MyRepository : IRepository<User>
{
    public List<User> UsersWithNameBob()
    {

    }
}

因此添加另一个不在 IRepository 中的方法。

我想将存储库强制为 IRepository,而上面它可以是任何类型。

一个小旁注:我正在为域对象很少的小型系统编写此代码。我不打算创建任何使用 IoC 的东西,而是创建一些易于使用的东西。

谢谢

最佳答案

您的 DomainObject 实现仅指定了一个泛型类型参数,而不是两个。为什么不是:

public class User : DomainObject<User, MyRepository>
{
    public string Name { get;private set;}
}

如果这不起作用,您能否解释一下它以何种方式无法满足您的需求?

关于c# - 与泛型打结,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1577949/

相关文章:

c# - 具有负值的最短路径的最快算法?

c# - 将 Rails 路由转换为 Asp.net MVC 路由

java - 根据输入的枚举值返回一个转换对象

c# - asp.net c# 格式化数字的正则表达式验证器

c# - 将收到的对象转换为 List<object> 或 IEnumerable<object>

c# - WMPLib : player. mediaCollection.getAll().count 始终为 0

c# - 将 struct 类型的通用列表绑定(bind)到 Repeater

从方法返回类型派生的 Java 泛型类型推断

java - 重写方法中的泛型

javascript - 记录列表的 TypeScript 数据类型