Библиотека Unity и WCF: где загрузить Unity в библиотеку wcf? - PullRequest
8 голосов
/ 08 октября 2009

кто-нибудь может помочь?

Я создал библиотеку WCF (не приложение), и я буду размещать ее на странице SVC IIS.

Но я хотел загрузить материал для единства в общем месте ... Я мог загрузить его в global.asax, но затем он был привязан к контейнеру IIS Asp.net, и при выполнении TDD эта часть не выполнялась, поэтому из моих решений будет работать.

Библиотека WCF является чистым классом, поэтому я сомневаюсь, что могу использовать любые события, такие как OnStartup и т. Д.

Единственный способ, которым я подумал о том, что служба должна наследовать от базового класса, а также интерфейс, который бы вызывал статический класс и выполнял самозагрузку для единства.

Я немного растерялся, это единственный путь или есть какой-то способ, о котором я не знаю.

По сути, идея в том, что ... кто когда-либо вызывает библиотеку wcf, тогда должно произойти внедрение единства ..

Есть идеи?

Спасибо

Ответы [ 3 ]

5 голосов
/ 08 октября 2009

Есть несколько способов решения этой проблемы. Вот вам два лучших варианта:

Вы можете создать собственный ServiceHost и переопределить InitializeRuntime

Вы можете создать класс с именем ApplicationStart в своем каталоге App_Code с помощью открытого статического метода AppInitialize (хотя это немного неприятно):

public static class ApplicationStart
{
    public static void AppInitialize()
    {
        // Initialise IoC container
    }
}

У Вэньлонга Донга есть другие методы в его блоге .

0 голосов
/ 20 января 2012

Теперь существует пакет NuGet с открытым исходным кодом, который называется Unity.WCF , который позаботится об этом за вас.

См. http://unitywcf.codeplex.com/ для получения дополнительной информации и исходного кода.

0 голосов
/ 08 октября 2009

Вы можете использовать IInstanceProvider для создания сервисных объектов с использованием Unity или другого контейнера IOC. Проверьте этот пост в блоге, чтобы узнать, как это сделать.

Затем вы можете использовать IContractBehavior, реализованный в качестве атрибута, чтобы добавить IInstanceProvider к DispatchRuntime, установив InstanceProvider в методе ApplyDispatchBehavior.

...