ASP.NET MVC 3でMEFを使う
MefContrib.MVC3を使うと簡単にASP.NET MVCからMEFを使えるのでご紹介。
前提:NuGetがインストール済みなこと。
まず、ASP.NET MVC3のプロジェクトの用意しましょう。
では、MEFを使えるようにしましょう。NuGetがインストールされていると「Add Library Package Reference...」メニューが選べます。
MefContrib.MVC3を選択してインストールします。
すると、必要なライブラリがダウンロードされ、参照が追加されます。また、ASP.NET MVCからMEFを使うためのおまじないコードもプロジェクトに追加されます。
興味があるなら、AppStart_MefContribMVC3.csを覗いてみてください。
これで、MEFが使えるようになりました。では、実際に使ってみましょう。
とりあえず、「Logics」ディレクトリにインタフェースを、「Logics.Impl」にその実装クラスを置くことにします。もちろん、どこでもいいです。
インタフェースはお馴染みの、これ。
namespace TestMvcApplication.Logics { public interface IGreeting { string Say(string msg); } }
んで、テキトーな実装。
using System; using System.ComponentModel.Composition; namespace TestMvcApplication.Logics.Impl { [Export(typeof(IGreeting))] public class GreetingImpl : IGreeting { public string Say(string msg) { return String.Format("Say 「{0}」", msg); } } }
MEFを使ってIGreetingをエクスポートしています。
では、これをHomeControllerから使ってみましょう。
using System.ComponentModel.Composition; using System.Web.Mvc; using TestMvcApplication.Logics; namespace TestMvcApplication.Controllers { public class HomeController : Controller { [Import] public IGreeting Greeting { get; set; } public ActionResult Index() { ViewBag.Message = Greeting.Say("ASP.NET MVC へようこそ"); return View(); } public ActionResult About() { return View(); } } }
IGreetingをインポートして呼び出すだけ。
MefContrib.MVC3を使うと、そこそこ簡単にMEFが利用できますね。