При вызове общего метода для хранения объекта иногда приходится обрабатывать определенный тип по-разному. Я знаю, что вы не можете перегружать на основе ограничений, но любая другая альтернатива, кажется, представляет свои проблемы.
public bool Save<T>(T entity) where T : class
{ ... some storage logic ... }
То, что мне хотелось бы сделать, это что-то вроде следующего:
public bool Save<SpecificClass>(T entity)
{ ... special logic ... }
В прошлом наша команда создала "одноразовые" методы для сохранения этих классов следующим образом:
public bool SaveSpecificClass(SpecificClass sc)
{ ... special logic ... }
Однако, если вы не знаете, что эта функция существует, и вы пытаетесь использовать общий (Сохранить), тогда вы можете столкнуться с множеством проблем, которые должен был исправить "одноразовый". Это может быть еще хуже, если появляется новый разработчик, видит проблему с общим и решает, что он исправит ее своей собственной одноразовой функцией.
Итак...
Каковы варианты работы вокруг этой, казалось бы, общей проблемы?
Я просмотрел и использовал UnitOfWork и сейчас, это единственный вариант, который фактически решает проблему - но похоже, что атакует муху кувалдой.