Вспомогательное HTML-расширение ServiceStack Funq MVC

Я пытаюсь создать вспомогательное расширение MVC html, которое должно быть объявлено как статический класс, примерно так:

public static class PhotoExtension
{
    public static IPhotoService PhotoService { get; set; }
    public static IGalleryService GalleryService { get; set; }

    public static MvcHtmlString Photo(this HtmlHelper helper, int photoId, string typeName)
    {
         //[LOGIC GOES HERE]
         return new MvcHtmlString(..some resulting Html...);
    }
}

Теперь я хочу использовать IPhotoService и IGalleryService внутри этого метода Photo(). До сих пор я нашел единственный способ внедрить эти сервисы в AppHost.Configure():

PhotoExtension.PhotoService = container.Resolve<IPhotoService>();
PhotoExtension.GalleryService = container.Resolve<IGalleryService>();

Это работает, хотя мне любопытно, есть ли лучший способ добиться этого.

И IPhotoService, и IGalleryService регистрируются стандартным образом в AppHost.Configure().

Спасибо, Антонин


person Antonin Jelinek    schedule 22.03.2013    source источник


Ответы (1)


Немного легче читать/следовать, подключить их в статическом конструкторе?

using ServiceStack.WebHost.Endpoints;

public static class PhotoExtension
{
    public static IPhotoService PhotoService { get; set; }
    public static IGalleryService GalleryService { get; set; }

    static PhotoExtension()
    {
        PhotoService = EndpointHost.AppHost.TryResolve<IPhotoService>();
        GalleryService  = EndpointHost.AppHost.TryResolve<IGalleryService>();
    }

    public static MvcHtmlString Photo(this HtmlHelper helper, int photoId, string typeName)
    {
     //[LOGIC GOES HERE]
     return new MvcHtmlString(..some resulting Html...);
    }
}
person Gavin Faux    schedule 30.05.2013