Так что я некоторое время усердно работал над созданием решения, которое создает определенные компоненты, используя только Castle DynamicProxy (версия 2.2) и перехватчик. Все выглядит отлично, за исключением того, что в конце всего этого я понял, что мне нужно зарегистрировать эти компоненты в контейнере виндзор. Это возможно или моя работа была напрасной?
Я изготовлю 2 конфигурации замка, чтобы объяснить мою проблему. Первый работает, а второй нет.
Первый конфиг (какое-то время он работал отлично):
<castle>
<facilities>
<facility
id="factory.support"
type="Castle.Facilities.FactorySupport.FactorySupportFacility, Castle.MicroKernel" />
</facilities>
<components>
<component
id="Factory"
service="Foo.IFactory, Foo"
type="Foo.Local.LocalFactory, Foo.Local" />
<component
id="Loader"
service="Foo.Contracts.ILoader, Foo.Contracts"
type="Foo.Local.Loader, Foo.Local"
factoryId="Factory" factoryCreate="GetLoader" />
</components>
</castle>
Второй конфиг (я не знаю, что добавить в атрибут type, и он не работает без него):
<castle>
<facilities>
<facility
id="factory.support"
type="Castle.Facilities.FactorySupport.FactorySupportFacility, Castle.MicroKernel" />
</facilities>
<components>
<component
id="Factory"
service="Foo.IFactory, Foo"
type="Foo.Remote.RemoteFactory, Foo.Remote" />
<component
id="Loader"
service="Foo.Contracts.ILoader, Foo.Contracts"
type="I DUNNO, WHAT'S THE TYPE?"
factoryId="Factory" factoryCreate="GetLoader" />
</components>
</castle>
Итак, мои изготовленные конфиги регистрируют фабрику, затем я регистрирую фабрику, а затем регистрирую свой компонент "ILoader". «LocalFactory» создает фактический тип для компонента ILoader, тогда как «RemoteFactory» создает компонент ILoader, используя динамический прокси, создавая прокси без целей. Т.е. я использую метод ProxyGenerator.CreateInterfaceProxyWithoutTarget, поэтому базовый класс отсутствует.
Итак, есть ли надежда в регистрации компонентов согласно второму конфигу?
EDIT:
К сожалению, в настоящее время использование API-интерфейса для быстрой конфигурации недоступно. Итак, чтобы сузить мой вопрос, возможно ли добиться этого с помощью конфигурации XML?