ایجاد ServiceLocator با استفاده از Ninject
نویسنده: مسعود پاکدل
تاریخ: ۱۳۹۱/۱۲/۰۴ ۲۰:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
PM> Install-Package CommonServiceLocator.NinjectAdapter
اگر دقت کنید برای ایجاد ServiceLocator دارم از ServiceLocator؛Enterprise Library استفاده میکنم. ولی برای این کار به جای استفاده UnityServiceLocator باید از NinjectServiceLocator استفاده کنم.
ابتدا
برای پیاده سازی مثال قبل در کلاس Program کدهای زیر رو وارد کنید.
using System;
using Ninject;
using NinjectAdapter;
using Microsoft.Practices.ServiceLocation;
namespace ServiceLocatorPattern
{
class Program
{
static void Main( string[] args )
{
IKernel kernel = new StandardKernel();
kernel.Bind<IBookRepository>().To<BookRepository>();
ServiceLocator.SetLocatorProvider( () => new NinjectServiceLocator( kernel ) );
BookService service = new BookService();
service.PrintAllBooks();
Console.ReadLine();
}
}
}همان طور که میبینید در هر جای پروژه که نیاز به یک Instance از یک کلاس داشته باشید میتونید با استفاده از ServiceLocator این کار خیلی راحت انجام بدید.
بعد از اجرای پروژه خروجی دقیقا مانند مثال قبل خواهد بود.
Install-Package CommonServiceLocator.NinjectAdapter
Install-Package : Unable to find package 'CommonServiceLocator.NinjectAdapter'. At line:1 char:16 + Install-Package <<<< CommonServiceLocator.NinjectAdapter + CategoryInfo : NotSpecified: (:) [Install-Package], InvalidOperationException + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand