kann jemand helfen?
Ich habe eine WCF-Bibliothek (nicht eine Anwendung) erstellt und werde diese auf einer SVC-IIS-Seite hosten.
Aber ich wollte das Unity-Zeug im generischen Bereich laden ... Ich könnte es in die global.asax laden, aber dann ist es mit dem IIS Asp.net-Container verbunden und wenn TDD ausgeführt wird, würde dieser Teil nicht ausgeführt, also nicht meiner Beschlüsse würde funktionieren.
WCF-Bibliothek ist eine reine Klasse, also bezweifle ich, dass ich irgendwelche Ereignisse wie OnStartup usw. verwenden kann?
Ich dachte nur daran, dass der Dienst von einer Basisklasse erben würde, genauso wie die Schnittstelle, die eine statische Klasse irgendeiner Art aufrufen und das Bootstrapping für Einheit durchführen würde.
Ich bin ein wenig verloren, ist dies der einzige Weg oder gibt es eine Art, auf die ich mich nicht bewusst bin.
Grundsätzlich ist die Idee ... Wer immer die WCF-Bibliothek nennt, dann muss die Einheitseinspritzung passieren.
Irgendwelche Ideen?
Danke
Es gibt mehrere Möglichkeiten, dieses Problem anzugehen. Hier sind zwei beste Optionen:
Sie können einen benutzerdefinierten ServiceHost erstellen und InitializeRuntime überschreiben
Sie können eine Klasse mit dem Namen ApplicationStart in Ihrem App_Code-Verzeichnis mit einer öffentlichen statischen Methode AppInitialize (es ist ein bisschen ein Geruch, obwohl):
erstellen %Vor%Wenlong Dong hat die anderen Methoden in seinem Blog .
>Sie können einen IInstanceProvider verwenden, um Serviceobjekte mit Unity oder einem anderen IOC-Container zu erstellen. In diesen Blog-Posts finden Sie Einzelheiten dazu so.
Als Nächstes können Sie ein IContractBehavior als Attribut implementieren, um den IInstanceProvider zur DispatchRuntime hinzuzufügen, indem Sie den InstanceProvider in der ApplyDispatchBehavior-Methode festlegen.
Es gibt jetzt ein Open-Source-NuGet-Paket mit dem Namen Unity.WCF , das sich darum kümmern kann.
Weitere Informationen und den Quellcode finden Sie Ссылка .
Tags und Links wcf c# ioc-container tdd unity-container