У меня есть один интерфейс (ICommonInterface
) и две реализации (WrapperImplementation
, CoreImplementation
) этого интерфейса.
Одна реализация использует другую реализацию ... то есть WrapperImplementation
имеет в своем конструкторе параметр ICommonInterface
, который, как ожидается, будет CoreImplementation
Примером того, как все это может быть собрано, является:
public interface ICommonInterface
{
void DoSomething();
}
public class CoreImplementation: ICommonInterface
{
public CoreImplementation()
{
}
public void DoSomething()
{
//some implementation
}
}
public class WrapperImplementation : ICommonInterface
{
private readonly ICommonInterface _coreImplementation;
public WrapperImplementation(ICommonInterface coreImplementation)
{
_coreImplementation = coreImplementation;
}
public void DoSomething()
{
_coreImplementation.DoSomething();
}
}
Использование свободного языкаподход ( раньше это прекрасно работало для наших целей ):
container.Register(
Component.For<ICommonInterface>().ImplementedBy<MyNameSpace.WrapperImplementation>().Named("WrapperImplementation").LifestyleSingleton(),
Component.For<ICommonInterface>().ImplementedBy<MyNameSpace.CoreImplementation>().Named("CoreImplementation"));
Как мне сделать то же самое с использованием конфигурации XML?
<component id="WrapperImplementation" service="MyNameSpace.ICommonInterface, MyNameSpace" type="MyNameSpace.WrapperImplementation, MyNameSpace" />
<component id="CoreImplementation" service="MyNameSpace.ICommonInterface, MyNameSpace" type="MyNameSpace.CoreImplementation, MyNameSpace" />
Я прочиталниже и я не вижу эквивалентной конфигурации XML для Fluent:
- Использование конфигурации XML
- Регистрация компонентов в XML
- Как настроить декоратор с помощью Castle Windsor?