Mini 容器学习笔记5—— 组件的获取
Mini容器主要实现了两个接口,一个是服务注册表接口,一个是服务定位器接口。那么组件的获取就要依靠服务定位器接口IServiceLocator。
IServiceLocator接口的定义:
public interface IServiceLocator : IServiceProvider,IDisposable { object Get(string id); object Get(Type serviceType); object Get(string id, IDictionary<string, object> args); object Get(Type serviceType, IDictionary<string, object> args); object Get(string id, params object[] args); object Get(Type serviceType, params object[] args); IEnumerable<object> GetAll(Type service); IEnumerable<T> GetAll<T>(); }
IServiceLocator的扩展方法:
public static TComponent Get<TComponent>(this IServiceLocator Locator, string id) public static TContract Get<TContract>(this IServiceProvider Locator) public static TComponent Get<TContract, TComponent>(this IServiceProvider locator) where TComponent : TContract
Mini容器通过核心接口保证了一个轻量级内核,通过扩展方法等来丰富Mini容器的Api。
服务定位器表门面类ServiceLocator:向用户提供注册表接口
public static class ServiceLocator { public static IServiceLocator Current{get;} public static TContract Get<TContract>() public static TComponent Get<TComponent>(string id) public static TComponent Get<TContract, TComponent>() where TComponent : TContract public static IEnumerable<TContract> GetAll<TContract>() public static object Get(Type contract) public static object Get(string id) }
Mini 容器官方网站:
推荐资源: