Wie kann ich Spritzen eine Eigenschaft nur, wenn der Wert nicht null ist, zur Laufzeit mithilfe von Unity?

Ich habe ein interface zu beheben, und eine von dem zugeordneten Objekt Abhängigkeiten hat eine Eigenschaft, die ich möchte ein Wert festgelegt, dass ich nur noch verfügbar, wenn ich auflösen der top-level-Objekt.

Gibt es keinen gültigen Standardwert für die Eigenschaft. Wenn nicht festgelegt, es sollte null sein, und es sollte nur gesetzt werden, wenn der Wert, den ich zur Verfügung habe zu lösen, die Zeit ist nicht null.

Ist diese bedingte Eigenschaft injection möglich?

Habe ich versucht, dieses...

container.RegisterType<ProductInstanceValidatorBase, CartItemPurchaseTypeValidator>("CartItemPurchaseTypeValidator", new InjectionProperty("AccountEntity", null);

... aber es sagte, ich konnte nicht verwenden Sie einen null-Wert!

Ich habe auch versucht, diese auf das lösen...

container.Resolve<ProductInstanceValidatorBase>(new PropertyOverride("AccountEntity", value));

...aber diese eine exception wirft, wenn der Wert null ist. Es sagt,

Parameter Typ-Inferenz, kann nicht für null-Werte. Geben Sie den parameter Typ explizit durch eine richtig konfigurierte Instanz der InjectionParameter oder InjectionParameter Klassen.
Parametername: Parameterwert

Grundsätzlich bin ich auf der Suche, um zu registrieren, eine Eigenschaft, die nur mit einem überschreiben, und dann nur, wenn die override-Wert nicht null ist. Irgendwelche Ideen? Sicherlich von einer semantischen Sicht, property injection sollte optional sein.

Prost, Ian.

Schreibe einen Kommentar