2

次のような静的クラスとして宣言する必要がある 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()ます。

ありがとう、アントニン

4

1 に答える 1

2

読みやすい/フォローしやすい、静的コンストラクターでそれらを接続しますか?

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...);
    }
}
于 2013-05-30T22:07:42.753 に答える