【问题标题】:DryIoc cannot resolve my boolean instance?DryIoc 无法解析我的布尔实例?
【发布时间】:2016-05-04 09:04:48
【问题描述】:

我尝试注册一个构造函数需要几个字符串、一个 ILog 和一个布尔值的类。我的容器中的所有内容都注册为单例(设置为默认重用)。

但每当我尝试获取该类 container.Resolve<AzmanAccess>() 的实例时,就会引发异常。

无法将布尔值解析为参数“accessAll” Company.Common.Util.Authentication.AzmanAccess: Company.Common.Util.Authentication.IAzmanAccess {RequiredServiceType=Company.Common.Util.Authentication.AzmanAccess} 作为参数“azmanAccess” Company.Common.Util.Authentication.AzmanCustomAccess: Company.Common.Util.Authentication.IAccess 作为参数“访问”在 Company.Common.Util.Authentication.User: Company.Common.Util.Authentication.IUser 其中 CurrentScope: null 和 ResolutionScope:null 并找到注册:skipAuthz,{ID=53, ImplType=Boolean, Reuse=SingletonReuse {Lifespan=1000}}} System.Object,{ID=25, ImplType=Boolean, Reuse=SingletonReuse {寿命=1000}}}

我这样注册我的课程:

        container.RegisterInstance(_accessAll, serviceKey: AccessAll);
        container.RegisterInstance(_activeDirectoryDomain, serviceKey: ActiveDirectoryDomain);
        container.RegisterInstance(_azmanConnString, serviceKey: AzmanConnString);
        container.RegisterInstance(_azmanStore, serviceKey: AzmanStore);
        container.Register(Made.Of(() => new AzmanAccess(
                Arg.Of<bool>(AccessAll),
                Arg.Of<ILog>(),
                Arg.Of<string>(ActiveDirectoryDomain),
                Arg.Of<string>(AzmanConnString),
                Arg.Of<string>(AzmanStore)
            )));

而构造函数是:

    public AzmanAccess(bool accessAll, ILog logger, string activeDirectoryDomain, string azmanConnString, string azmanStore)

其中 servicekeys (AccessAll, ...) 是唯一的(先尝试对象,然后是字符串)。

怎么了?

【问题讨论】:

  • 服务密钥 AccessAll 的类型是什么?我用字符串键复制了你的情况,它起作用了。
  • @dadhi 您是否尝试使用“new object()”作为其他服务密钥?

标签: dryioc


【解决方案1】:

the bug in DryIoc引起的问题:Arg.Of无法识别非原始类型的服务密钥。

在修复错误之前,解决方法是将object 服务密钥更改为例如stringEnum typeint

更新: 该修复程序在DryIoc v2.4.3 中可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多