【问题标题】:Unity 3, generic type not resolving, type does not have an accessible constructorUnity 3,泛型类型不解析,类型没有可访问的构造函数
【发布时间】:2014-09-30 15:14:41
【问题描述】:

我有以下注册。目标是当需要注入 IDbSet 时,会将其从请求 IDataContext 中提取出来。

container.RegisterType<IDbSet<AuditRound>>(new InjectionFactory(c => c.Resolve<IDataContext>().AuditRounds));
var thisReturnsTrue = container.Registrations.Any(e => e.RegisteredType == typeof(IDbSet<AuditRound>));
var fails = container.Resolve<IDbSet<AuditRound>>();

它失败并显示类型 DbSet`1 没有可访问的构造函数的消息。似乎它正在尝试使用 ISomeClass 解析为 SomeClass 的约定,在本例中为 IDbSet 为 DbSet。我确实在注册中看到了 IDbSet 的注册,它似乎具有优先权。任何帮助表示赞赏。谢谢。

【问题讨论】:

  • 确保您有一个 public 构造函数可用于您尝试创建的类型。
  • 我不是在构造它,注册是一个回调函数,应该返回实例。
  • 构造它的东西仍然需要一个可访问的构造函数。
  • 感谢 OMGtechy,但这不是问题。

标签: unity-container ioc-container


【解决方案1】:

我的问题原来是约定注册“RegisterTypes”正在将 IDbSet 注册到 DbSet。此注册优先于我自己的其他注册。我尝试更改顺序,但没有帮助。我不得不从我的注册程序中排除 DbSet。 Exclusions 是 container.RegisterTypes 上的一个参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多