Шаблон обработчика в Project Silk - PullRequest
1 голос
/ 27 сентября 2011

Я смотрю на источник проекта Project Silk, и есть шаблон «обработчик», которого я раньше не видел.Во-первых, эта ссылка из 2009 года намекает на это, но заставляет меня повесить

. В этом примере показан один класс методов, где каждый класс представляет один метод для каждого метода в связанном классе репозитория.Классы названы как имена методов.

public class GetFillupsForVehicle
{
    private readonly IFillupRepository _fillupRepository;

    public GetFillupsForVehicle(IFillupRepository fillupRepository)
    {
        _fillupRepository = fillupRepository;
    }
    public virtual IEnumerable<FillupEntry> Execute(int vehicleId)
    {
        try
        {
            var fillups = _fillupRepository
                .GetFillups(vehicleId)
                .OrderBy(f => f.Date)
                .ToList();

            return new ReadOnlyCollection<FillupEntry>(fillups);
        }
        catch (InvalidOperationException ex)
        {
            throw new BusinessServicesException(Resources.UnableToRetireveFillupsExceptionMessage, ex);
        }
    }
}

Может ли кто-нибудь объяснить эту модель или указать мне на то, что я мог бы прочитать, чтобы узнать больше?

Спасибо, Пол

1 Ответ

0 голосов
/ 20 июля 2012

Пожалуйста, обратитесь к этой информации о Project Silk , который будет более актуальным для принятия.

В фрагменте кода, который я разместил в PDF-документе, предоставленном Microsoft для Project Silk, вы сможете понять, как он используется. По моему мнению, это больше рассматривается как основа для запуска события на уровне бизнес-домена.

Также обратитесь к этому определенному сообщению , которое может пролить свет туда, куда они направляются.

</p> <pre><code>public ActionResult Add(int vehicleId) { var vehicles = Using<GetVehicleListForUser>() .Execute(CurrentUserId); var vehicle = vehicles.First(v => v.VehicleId == vehicleId); var newFillupEntry = new FillupEntryFormModel { Odometer = (vehicle.Odometer.HasValue) ? vehicle.Odometer.Value : 0 }; var fillups = Using<GetFillupsForVehicle>() .Execute(vehicleId) .OrderByDescending(f => f.Date); var viewModel = new FillupAddViewModel { VehicleList = new VehicleListViewModel(vehicles, vehicleId) {IsCollapsed = true}, FillupEntry = newFillupEntry, Fillups = new SelectedItemList<Model.FillupEntry>(fillups), }; ViewBag.IsFirstFillup = (!fillups.Any()); return View(viewModel); }

...