2012-11-02 5 views
5

Я переезжаю некоторый код от замка 2.5.2 до 3.0, у меня есть набор предопределенных регистраций (в моем загрузочном коде), что делает некоторые вещи, основываясь на конвенциях, таких как:замок Виндзор 3,0 ComponentRegistration «ServiceType»

container.Register 
(
    AllTypes.FromAssemblyInDirectory(new AssemblyFilter(".")) 
     .IncludeNonPublicTypes() 
     .Where(t => conventions.IsViewModel(t) && !conventions.IsExcluded(t)) 
     .WithService.Select((type, baseTypes) => conventions.SelectViewModelContracts(type)) 
     .Configure(r => 
     { 
        r.Properties(PropertyFilter.IgnoreAll); 

      if(conventions.IsShellViewModel(r)) 
      { 
       r.LifeStyle.Is(LifestyleType.Singleton); 
      } 
      else 
      { 
       r.LifeStyle.Is(LifestyleType.Transient); 
      } 
     }) 
); 

в Windsor 2.5.2 класс ComponentRegistration имеет свойство ServiceType, в 3.0 есть свойство Services, но оно «внутренне защищено».

Управление моими соглашениями зависит от того, что мне нужно знать, какие услуги.

Как я могу получить эту информацию?

.m

+0

В настоящее время я частично разрешил ему доступ к свойству Services в ComponentRegistration с помощью отражения, но это PITA. –

ответ

0

Не .WithServiceSelect FULLFILL ваши потребности?

+0

В каком направлении? проблема заключается в классе ComponentRegistration, который больше не раскрывает информацию об ServiceType (или Services it wll). –

0

Сегодня я испытывал то же самое. Решил его, как показано ниже, который работает, поскольку мы следуем некоторым соглашениям. Он не чувствует, что это хорошее решение, хотя ...

.Configure(x => x.Named("I"+x.Implementation.Name)) 
Смежные вопросы