static void Main(string[] args) { //创建一个容器 IServiceContainer services = new ServiceContainer(); services.Configure(config => { config.Interceptors.AddTyped <SampleInterceptor>(); }); services.AddType <ISampleService, SampleService>(); services.AddType <ISampleRepository, SampleRepository>(); //使用类型注册服务 services.AddType <ILogger, Logger>(); //使用实例注册服务,服务的生命周期限定为单例 services.AddInstance <ITaskService>(new TaskService()); //使用委托工厂注册服务 services.AddDelegate <ITaskService, TaskService>(resolver => new TaskService()); //创建服务解析器 IServiceResolver serviceResolver = services.Build(); //解析单个服务 ISampleService sampleService = serviceResolver.Resolve <ISampleService>(); //解析单个服务,并且验证是否为null,为null则抛出异常 ISampleService sampleServiceRequired = serviceResolver.ResolveRequired <ISampleService>(); //解析服务集合,如果未注册,则为空集合 IEnumerable <ISampleService> sampleServices = serviceResolver.ResolveMany <ISampleService>(); }
public void LoadBinding() { var dict = new Dictionary <string, string> { { "creator:age", "24" }, { "creator:name", "lemon" } }; var builder = new ConfigurationBuilder().AddEnvironmentVariables(); builder.AddInMemoryCollection(dict); var configuration = builder.Build(); var container = new ServiceContainer(); container.AddInstance <IConfiguration>(configuration); container.AddConfigurationInject(); container.AddType <BindConfigService>(); var service = container.Build().Resolve <BindConfigService>(); Assert.Equal(service.ToString(), "lemon-24"); }