你能在Windsor Container中注册一个类型的现有实例吗?

在Windsor IOC容器中是否可以注册一个我已经拥有实例的类型,而不是让容器创建它?

Container的Kernel属性上有一个AddComponentInstance方法。

从unit testing:

[Test] public void AddComponentInstance() { CustomerImpl customer = new CustomerImpl(); kernel.AddComponentInstance("key", typeof(ICustomer), customer); Assert.IsTrue(kernel.HasComponent("key")); CustomerImpl customer2 = kernel["key"] as CustomerImpl; Assert.AreSame(customer, customer2); customer2 = kernel[typeof(ICustomer)] as CustomerImpl; Assert.AreSame(customer, customer2); } [Test] public void AddComponentInstance_ByService() { CustomerImpl customer = new CustomerImpl(); kernel.AddComponentInstance (customer); Assert.AreSame(kernel[typeof(ICustomer)],customer); } [Test] public void AddComponentInstance2() { CustomerImpl customer = new CustomerImpl(); kernel.AddComponentInstance("key", customer); Assert.IsTrue(kernel.HasComponent("key")); CustomerImpl customer2 = kernel["key"] as CustomerImpl; Assert.AreSame(customer, customer2); customer2 = kernel[typeof(CustomerImpl)] as CustomerImpl; Assert.AreSame(customer, customer2); }