DryIoc 无法解析我的布尔实例?
DryIoc cannot resolve my boolean instance?
我尝试注册一个 class 构造函数需要一些字符串、一个 ILog 和一个布尔值。 all in my container 注册为单例(设置为默认Reuse)。
但是每当我尝试获取 class container.Resolve<AzmanAccess>()
的实例时,就会抛出异常。
Unable to resolve Boolean as parameter "accessAll" in
Company.Common.Util.Authentication.AzmanAccess:
Company.Common.Util.Authentication.IAzmanAccess
{RequiredServiceType=Company.Common.Util.Authentication.AzmanAccess}
as parameter "azmanAccess" in
Company.Common.Util.Authentication.AzmanCustomAccess:
Company.Common.Util.Authentication.IAccess as parameter "access" in
Company.Common.Util.Authentication.User:
Company.Common.Util.Authentication.IUser Where CurrentScope: null and
ResolutionScope: null and Found registrations: skipAuthz,{ID=53,
ImplType=Boolean, Reuse=SingletonReuse {Lifespan=1000}}}
System.Object,{ID=25, ImplType=Boolean, Reuse=SingletonReuse
{Lifespan=1000}}}
我这样注册我的 class:
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, ...) 是唯一的(尝试对象,然后是字符串)。
怎么了?
the bug in DryIoc引起的问题:Arg.Of
无法识别非原始类型的服务密钥。
在修复错误之前,解决方法是将 object
服务密钥更改为例如string
、Enum type
或 int
。
更新:
该修复程序在 DryIoc v2.4.3.
中可用
我尝试注册一个 class 构造函数需要一些字符串、一个 ILog 和一个布尔值。 all in my container 注册为单例(设置为默认Reuse)。
但是每当我尝试获取 class container.Resolve<AzmanAccess>()
的实例时,就会抛出异常。
Unable to resolve Boolean as parameter "accessAll" in Company.Common.Util.Authentication.AzmanAccess: Company.Common.Util.Authentication.IAzmanAccess {RequiredServiceType=Company.Common.Util.Authentication.AzmanAccess} as parameter "azmanAccess" in Company.Common.Util.Authentication.AzmanCustomAccess: Company.Common.Util.Authentication.IAccess as parameter "access" in Company.Common.Util.Authentication.User: Company.Common.Util.Authentication.IUser Where CurrentScope: null and ResolutionScope: null and Found registrations: skipAuthz,{ID=53, ImplType=Boolean, Reuse=SingletonReuse {Lifespan=1000}}} System.Object,{ID=25, ImplType=Boolean, Reuse=SingletonReuse {Lifespan=1000}}}
我这样注册我的 class:
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, ...) 是唯一的(尝试对象,然后是字符串)。
怎么了?
the bug in DryIoc引起的问题:Arg.Of
无法识别非原始类型的服务密钥。
在修复错误之前,解决方法是将 object
服务密钥更改为例如string
、Enum type
或 int
。
更新: 该修复程序在 DryIoc v2.4.3.
中可用