У меня есть следующие классы и интерфейсы. Я хочу существенно заморозить интерфейс IOld (который будет устаревать) и заставить пользователей использовать интерфейс INew, который будет содержать те же методы, что и IOld. Однако метод INew Meth3 представляет ту же функциональность, что и IOld Meth2, но с другим типом возврата, и чтобы отличить их лучше, я думал, что этот дизайн будет подходящим. Мой вопрос в том, считается ли это хорошей практикой кодирования?Абстрактный базовый класс, реализующий методы интерфейса производного класса
ПРИМЕЧАНИЕ: IOld и INew живут в отдельных агрегатах. NewClass не может ссылаться на IOld каким-либо образом, поскольку он будет отображаться как удаленный объект (MarshalByRef), с которым клиенты будут подключаться через интерфейс INew. Я не хочу, чтобы новые клиенты ссылались на сборку IOld.
public interface IOld
{
void Meth1();
double Meth2(int input);
}
public interface INew
{
void Meth1();
float Meth3(int input);
}
public abstract class BaseClass
{
public virtual void Meth1()
{
}
public virtual double Meth2(int input)
{
throw new NotImplementedException();
}
}
public class OldClass
:
BaseClass,
IOld
{
public override double Meth2(int input)
{
return 0;
}
}
public class NewClass
:
BaseClass,
INew
{
public float Meth3(int input)
{
return 0;
}
}
+1 - взял на себя смелость немного редактирования, а также - Соз !! :-) –
Спасибо за ваш вопрос; да, я буду отмечать интерфейс как устаревший, но хотел бы указать основной дизайн; Точка, которую я должен был сделать, - это то, что NewClass не может ссылаться на IOld каким-либо образом, поскольку он будет отображаться как удаленный объект, а клиенты, собирающие его через интерфейс INew, не могут подключиться к сборке IOld. Я соответствующим образом обновил свой вопрос. – Jeb