Предположим, у меня есть репозиторий, который возвращает список Post
s. В интерфейсе репозитория есть метод GetAll ()
, который делает то, что предлагает.
Теперь, в соответствии с теорией, что мне не следует помещать логику домена в репозиторий, я хочу перехватывать вызовы конкретного метода GetAll ()
, чтобы я мог добавить следующую логику к результату GetAll ()
:
return GetAll().OrderByDescending(p => p.Posted).ToList();
Причина, по которой я хочу это перехватить, - потому что (1) я не хочу, чтобы клиент не забывал вызывать метод расширения ( OrderByDescending
или какая-то бесполезная оболочка этого), я хочу, чтобы он вызывался каждый раз, и (2) я не хочу чтобы иметь все мои конкретные реализации, нужно помнить о том, чтобы упорядочить результат GetAll ()
- я хочу, чтобы эта логика находилась в одном месте, внешнем по отношению к любому репозиторию.
Какой самый простой способ сделать это?
Я уже использую StructureMap , поэтому, если я смогу перехватить это, это может быть недорогой вариант. Но я не думаю, что SM перехватывает вызовы методов, только создание экземпляра объекта?
Нужно ли мне переходить на прокси или миксин шаблон? Нужно ли мне идти ва-банк с Castle Dynamic Proxy ? Или есть другой метод , который я должен рассмотреть, или, возможно, комбинация?
Меня действительно интересует конкретное предложение для моего конкретного примера выше. Я новичок в АОП, поэтому будьте осторожны.