2016-05-04 22 views
2

コンストラクタがILogとboolという少数の文字列を必要とするクラスを登録しようとしています。私のコンテナ内のすべてがシングルトンとして登録されています(デフォルトの再利用として設定されています)。私のブール値インスタンスをDryIocで解決できませんか?

しかし、私はそのクラスcontainer.Resolve<AzmanAccess>()のインスタンスを取得しようとすると例外がスローされます。

Company.Common.Util.Authentication.AzmanAccessで "accessAll" パラメータとしてブールを解決することができません: Company.Common.Util.Authentication.IAzmanAccess {RequiredServiceType = Company.Common.Util.Authentication.AzmanAccess Company.Common: Company.Common.Util.Authentication.Userにおけるパラメータ "アクセス" として Company.Common.Util.Authentication.IAccess: Company.Common.Util.Authentication.AzmanCustomAccessにおけるパラメータ "azmanAccess" として} .Util.Authentication.IUser CurrentScope:nullおよび ResolutionScope:nullおよびFound registereds:skip authz、{ID = 53、 ImplType =ブール、リユース= SingletonReuse {寿命= 1000}}} のSystem.Object、{ID = 25、ImplType =ブール、リユース= 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) 
      ))); 

とコンストラクタは次のとおりです。

servicekeys(AccessAll、...)は(文字列、その後、オブジェクトを試してみました)一意である
public AzmanAccess(bool accessAll, ILog logger, string activeDirectoryDomain, string azmanConnString, string azmanStore) 

どうなりますか?

+0

サービスキーAccessAllの種類は何ですか?私はあなたのケースを文字列キーで再現し、それが機能しました。 – dadhi

+0

@dadhi他のサービスキーに「new object()」を試しましたか? –

答えて

1

the bug in DryIocArg.Ofによる問題は、非プリミティブ型のサービスキーを認識しません。

バグが修正されるまでの回避策は、例えばへobjectサービスキーを変更することです,Enum typeまたはintである。

更新: 修正プログラムはDryIoc v2.4.3で入手できます。

関連する問題