Пусть метод GetX будет в интерфейсе. с этого момента вы можете иметь столько классов, сколько захотите, чтобы реализовать интерфейс.
public interface ISomeInterface { X GetX(); }
Теперь создайте класс, который будет реализовывать шаблон проектирования фабрики (прочитайте об этом, если вы его не знаете), и позвольте этому классу принять условие, которое позволит ему решить, какой класс, который реализует вышеуказанный интерфейс, вернуть. *
вот что я сказал через код:
public class XmlWay : ISomeInterface
{
public X GetX()
{
//your implementation
}
}
public class NonXmlWay : ISomeInterface
{
public X GetX()
{
// Another implementation
}
}
и наконец заводской класс
public class MyXFactory
{
public static ISomeInterface GetXImplementation(bool someCondition)
{
if (someCondition)
return new XmlWay();
else
return new NonXmlWay();
}
Теперь посмотрим, как будет выглядеть ваш код:
ISomeInterface xGen = MyXFactory.GetXImplementation(true);
xGen.GetX();
Надеюсь, это поможет.