Ich verwende StructureMap für meine DI. Stellen Sie sich vor ich eine Klasse, die ein Argument wie:Übergabe von Konstruktorargumenten bei Verwendung von StructureMap
public class ProductProvider : IProductProvider
{
public ProductProvider(string connectionString)
{
....
}
}
Ich brauche die „connection zur Laufzeit angeben, wenn ich eine Instanz von IProductProvider bekommen
I StructureMap so konfiguriert haben, wie folgt.:
ForRequestedType<IProductProvider>.TheDefault.Is.OfConcreteType<ProductProvider>().
WithCtorArgument("connectionString");
aber ich will nicht EqualTo nennen („etwas ...“) Methode, die hier als ich eine Anlage muß dynamisch diesen Wert zur Laufzeit angeben.
Meine Frage ist: Wie bekomme ich eine Instanz von IProductProvider mit ObjectFactory?
Derzeit habe ich so etwas wie:
ObjectFactory.GetInstance<IProductProvider>();
Aber wie Sie wissen, das nicht funktioniert ...
Jede Beratung wäre sehr dankbar.
Stellen Sie sicher, dass someValueAtRuntime ein einfacher Wert ist, nicht irgendeine Art von Func oder Lambda (wenn Sie das können), um sie abzurufen, andernfalls wird diese Funktion jedes Mal ausgeführt, wenn die Abhängigkeit aufgelöst wird. Ich habe diesen Trick verwendet, um eine Verbindungszeichenfolge zu injizieren, genau wie Sie es tun. Solange Sie die Zeichenfolge in eine lokale Variable vor dem Einrichten von ObjectFactory erhalten, sollten Sie in Ordnung sein. – Mel
Yo. Was ist, wenn ich mehrere Argumente habe, arg1, 2, 3 usw. Und ich möchte jedes Argument so übergeben, wie es ist, aber einen der Argumente als null behalten. Wie macht man das? –
@Mosh danke für die Antwort, wie auch immer können Sie mir bitte sagen, wie Sie someValueAtRuneTime übergeben? Ein Beispiel dafür bitte. – wandos