2016-05-04 14 views
2

Ich versuche eine Klasse zu registrieren, deren Konstruktor ein paar Strings, ein ILog und ein Bool benötigt. Alle in meinem Container sind als Singleton registriert (als Standard-Wiederverwendung festgelegt).DryIoc kann meine boolesche Instanz nicht auflösen?

Aber immer wenn ich versuche, eine Instanz dieser Klasse container.Resolve<AzmanAccess>() zu erhalten, wird eine Ausnahme ausgelöst.

Unable Boolean als Parameter "accessAll" in Company.Common.Util.Authentication.AzmanAccess zu beheben: Company.Common.Util.Authentication.IAzmanAccess {RequiredServiceType = Company.Common.Util.Authentication.AzmanAccess } als Parameter "azmanAccess" in Company.Common.Util.Authentication.AzmanCustomAccess: Company.Common.Util.Authentication.IAccess als Parameter "access" in Company.Common.Util.Authentication.User: Company.Common .Util.Authentication.IUser Wobei CurrentScope: null und ResolutionScope: Null und gefundene Registrierungen: Überspringen Authz, {ID = 53, ImplType = Boolean, Reuse SingletonReuse = {Lebensdauer = 1000}}} System.Object, {ID = 25, ImplType = Boolean, Reuse = SingletonReuse {Lebensdauer = 1000}}}

melde ich mich meiner Klasse wie folgt aus:

 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) 
      ))); 

und der Konstruktor ist:

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

Wo servicekeys (AccessAll, ...) eindeutig sind (mit Objekten versucht, dann string).

Was läuft falsch?

+0

Was ist der Typ des Service-Schlüssels AccessAll? Ich habe deinen Fall mit dem String-Key reproduziert und es hat funktioniert. – dadhi

+0

@dadhi Haben Sie mit "new object()" für den anderen Dienstschlüssel versucht? –

Antwort

1

Das von the bug in DryIoc: Arg.Of verursachte Problem erkennt Dienstschlüssel nicht primitiven Typs nicht.

Bis der Fehler behoben ist, besteht die Problemumgehung darin, den Dienstschlüssel object in z. string, Enum type oder int.

Aktualisierung: Der Fix ist in DryIoc v2.4.3 verfügbar.

Verwandte Themen