پیاده سازی ServiceLocator با استفاده از Microsoft Unity
نویسنده: مسعود پاکدل
تاریخ: ۱۳۹۱/۱۲/۰۳ ۱۶:۳۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
اگر Assemblyهای بالا رو در اختیار ندارید میتونید اونها رو از اینجا دانلود کنید. Microsoft Enterprise Library یک کتابخانه تهیه شده توسط شرکت Microsoft است که شامل موارد زیر است و بعد از نصب میتونید در قسمتهای مختلف برنامه از اونها استفاده کنید.
برای اجرای مثال ابتدا کلاس زیر رو به عنوان مدل وارد کنید.
public class Book
{
public string Title { get; set; }
public string ISBN { get; set; }
} public interface IBookRepository
{
List<Book> GetBooks();
}public class BookRepository : IBookRepository
{
public List<Book> GetBooks()
{
List<Book> listOfBooks = new List<Book>();
listOfBooks.AddRange( new Book[]
{
new Book(){Title="Book1" , ISBN="123"},
new Book(){Title="Book2" , ISBN="456"},
new Book(){Title="Book3" , ISBN="789"},
new Book(){Title="Book4" , ISBN="321"},
new Book(){Title="Book5" , ISBN="654"},
} );
return listOfBooks;
}
}public class BookService
{
public BookService()
: this( ServiceLocator.Current.GetInstance<IBookRepository>() )
{
}
public BookService( IBookRepository bookRepository )
{
this.BookRepository = bookRepository;
}
public IBookRepository BookRepository
{
get;
private set;
}
public void PrintAllBooks()
{
Console.WriteLine( "List Of All Books" );
BookRepository.GetBooks().ForEach( ( Book item ) =>
{
Console.WriteLine( item.Title );
} );
}
} class Program
{
static void Main( string[] args )
{
IUnityContainer unityContainer = new UnityContainer();
unityContainer.RegisterType<IBookRepository, BookRepository>();
ServiceLocator.SetLocatorProvider( () => new UnityServiceLocator( unityContainer ) );
BookService service = new BookService();
service.PrintAllBooks();
Console.ReadLine();
}
}