Witam

Tworzę mini projekcik WCF hostowany przez IIS.
Chciałbym zaimplementować DI w oparciu o SimpleInjector.
Do tej pory używałem Castle Windsor. Po prostu posiadałem działający przykład konfiguracji i zawsze go stosowałem nie zgłębiając się dlaczego i jak to działa.

Teraz mam problem aby poprawnie skonfigurować/zastosować SimpleInjector.
Na razie żeby sprawdzić czy sobie z tym radzę stworzyłem mikroprojekt WCF do którego próbuję zaimplementować SimpleInjector.

Zainstalowałem pakiet SimpleInjector.Integration.Wcf.QuickStart.

Service contract:

namespace SimpleInjectorTest2
{
    // UWAGA: możesz użyć polecenia „Zmień nazwę” w menu „Refaktoryzuj”, aby zmienić nazwę interfejsu „IService1” w kodzie i pliku konfiguracji.
    [ServiceContract]
    public interface IDzialanie
    {

        [OperationContract]
        int Wynik(int value1, int value2);

    }
}

Klasa implementująca service contract (tutaj w konstruktor chciałbym wstrzyknąć klasę, która implementuje interfejs ISuma):

namespace SimpleInjectorTest2
{
    public class Dzialanie : IDzialanie
    {   

        
        private ISuma suma;
        public Dzialanie(ISuma suma)
        {
            this.suma = suma;
        }


        public int Wynik(int value1, int value2)
        {
            return suma.Suma(value1, value2);
        }
    }
}

Klasa wygenerowana w App_Start po zainstalowaniu pakietu SimpleInjector.Integration.Wcf.QuickStar:

[assembly: WebActivator.PostApplicationStartMethod(typeof(SimpleInjectorTest2.App_Start.SimpleInjectorInitializer), "Initialize")]

namespace SimpleInjectorTest2.App_Start
{
    using System.Reflection;

    using SimpleInjector;
    using SimpleInjector.Integration.Wcf;

    public static class SimpleInjectorInitializer
    {
        /// <summary>Initialize the container and register it for the WCF ServiceHostFactory.</summary>
        public static void Initialize()
        {
            var container = new Container();
            container.Options.DefaultScopedLifestyle = new WcfOperationLifestyle();

            InitializeContainer(container);

            container.RegisterWcfServices(Assembly.GetExecutingAssembly());

            container.Verify();
            
            SimpleInjectorServiceHostFactory.SetContainer(container);

            // TODO: Add the following attribute to all .svc files:
            // Factory="SimpleInjector.Integration.Wcf.SimpleInjectorServiceHostFactory, SimpleInjector.Integration.Wcf"
        }

        private static void InitializeContainer(Container container)
        {
            container.Register<IDzialanie, Dzialanie>();
            container.Register<ISuma, Suma>(Lifestyle.Singleton);
            // For instance:
            // container.Register<IUserRepository, SqlUserRepository>(Lifestyle.Scoped);
        }
    }
}

No i niestety to nie działa. Ktoś może mnie pokierować jak to poprawnie skonfigurować aby wstrzyknąć zależność w konstruktorze?
W wygenerowanym pliku jest jeszcze poniższy komentarz. Tylko nie bardzo wiem jak to dodać i gdzie?

// TODO: Add the following attribute to all .svc files:
// Factory="SimpleInjector.Integration.Wcf.SimpleInjectorServiceHostFactory, SimpleInjector.Integration.Wcf"