Предположим, у меня есть объект некоторого типа A и я хочу преобразовать его в тип B. Скажем, будет несколько реализаций этого интерфейса, так как у нас будет много дочерних элементов A и B. Итак, я создаю интерфейс наподобие:
interface IAToB {
B Transform<A, B>(A a);
}
Проблема с этим интерфейсом, который я вижу, заключается в том, что мне нужно инициализировать объект типа B в Transform, что означает, что если я изменяю logi инициализации c из B, мне нужно соответствующим образом изменить все реализации IAToB. Итак, рассмотрим следующее:
interface IAToB {
void Transform<A, B>(A a, out B b);
}
От разработчика IAToB теперь требуется передать инициализированный B.
Итак, последний интерфейс более совместим с принципами SOLID по сравнению к прежнему? Или я просто перемещаю соединение, фактически не уменьшая его, так сказать? Кроме того, имело ли бы смысл помещать дженерики в определение интерфейса, чтобы иметь interface IAToB<A, B> { ... }
?