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