2012-03-22 6 views
0

Хотя я могу понять, как регистрировать интерфейсы для конкретных классов, этот конкретный класс должен быть единственным экземпляром (я уверен, что это LifeStyle.Singleton), а также вызвать метод graphClient.Connect(). Это основная часть, на которую я застрял.Может кто-нибудь помочь мне преобразовать эту регистрацию AutoFac в Виндзор?

На основании ответа JeffN825, я сделал это:

container.Register(
       Component.For(
        typeof (IGraphClient)) 
        .ImplementedBy(typeof (GraphClient)) 
        .LifeStyle.Singleton.UsingFactoryMethod(() => 
                   { 
                    var graphClient = new GraphClient(new Uri("http://localhost:7474/db/data")); 
                    graphClient.Connect(); 
                    return graphClient; 
                   })); 
+0

(... почему кто-то хочет конвертировать из Autofac в Windsor ??;) –

+0

Уже используя Windsor, зачем переключаться? – rball

+0

Я вижу, тогда нет никаких оснований, нет. У меня создалось впечатление, что на самом деле вы портировали существующий код на основе Autofac, чтобы использовать Windsor. –

ответ

0

Вы можете использовать ComponentRegistration<T>.UsingFactoryMethod<T> метод, который принимает делегат (Func), если вы хотите, чтобы контролировать создание экземпляра самостоятельно (который также даст вам возможность вызов Connect).