Здравствуйте, Степанов Алексей Александрович, Вы писали:
САА>Имеется несколько библиотек с идентичными интерфейсами.
САА>Требуется в зависимости от некоторых начальных условий
САА>использовать ту или иную библиотеку.
САА>Как бы сделать это наиболее прозрачно, т.е. без внесения
САА>в основной код, использующий эти интерфейсы, постоянных
САА>проверок условий и т.п.
Посмотрите в сторону паттерна AbstractFactory. К примеру:
public abstract class AsbtractComponentFactory
{
public IComponentA CreateComponentA();
}
public class ConcreteComponentFactory
{
public override IComponentA CreateComponentA()
{
return new ConcreteComponentA();
}
}
То есть внутри конкретной фабрики вы можете создавать экземпляры классов конкретной библиотеки. В коде повсеместно для создания объектов используйте абстрактную фабрику и вы избежите проверок.
САА>Может стоит задуматься о рефлекшне? Но не появятся ли
САА>неоправданные, в данном случае, тормоза?
Вы можете при старте приложения создать активатором конкретную фабирку и закэшировать ее — в этом случае вопрос быстродействия не сильно пострадает.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>