У меня есть два интерфейса IDto1 и IDto2. IDto2 наследует IDto1. Оба интерфейса предназначены для DTO, поэтому я хочу, чтобы «сложный» код не использовался в их реализациях - я делаю это, помещая единственный метод расширения Initialize в статический класс для каждого интерфейса.
Таким образом, я получаю следующие типы IDto1, IDto2, IDto1Extensions, IDto2Extensions.
Я хотел бы иметь метод расширения Initialize на обоих интерфейсах, но для каждого иметь свою реализацию.
В коде клиента я хочу использовать такой код:
(dto as IDto1).Initialize();
... и я хотел бы, чтобы соответствующий метод расширения вызывался на основе разрешенного типа переменной dto во время выполнения.
Возможно ли это в C #, а если нет, то почему?
Edit:
Извините, конечно, это:
(dto as IDto1).Initialize();
... вызовет метод Initialize для типа IDto1 . Я имел в виду, что переменная dto будет передана в качестве аргумента методу, и я считаю, что метод будет выбираться полиморфно с учетом иерархии наследования, которую я указывал ранее.
Спасибо за все ваши ответы.