关于c#:可以在Windsor容器中注册类型的现有实例吗?

关于c#:可以在Windsor容器中注册类型的现有实例吗?

Can you register an existing instance of a type in the Windsor Container?

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


容器的内核属性上有一个AddComponentInstance方法。

从单元测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[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 <ICustomer>(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);
}


推荐阅读

    linux命令升级内核?

    linux命令升级内核?,系统,软件,电脑,发行,最新,内核,情况,官网,状态,材料,Lin

    linux内核配置命令?

    linux内核配置命令?,工作,系统,管理,环境,信息,命令,工具,软件,设备,服务,调

    linux内核打包命令?

    linux内核打包命令?,信息,工具,系统,软件,内核,管理,标准,情况,智能,文件,如

    linux查询内核数命令?

    linux查询内核数命令?,系统,第一,信息,命令,实时,软件,电脑,内核,个数,界面,

    linux上自己注册命令?

    linux上自己注册命令?,系统,密码,工作,命令,文件,文件夹,新增,联系方式,状

    linux系统内核命令?

    linux系统内核命令?,信息,系统,工作,工具,电脑,软件,管理,设备,内核,发展,如

    linux系统内核命令?

    linux系统内核命令?,信息,系统,工作,工具,电脑,软件,管理,设备,内核,发展,如

    查看linux类型命令?

    查看linux类型命令?,系统,信息,命令,状态,数据,数字,情况,地址,类型,文件,lin

    linux删除类型命令?

    linux删除类型命令?,系统,档案,命令,文件,名称,环境,数据,不了,目录,文件夹,

    linux使用命令的方法?

    linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,

    linux显示内核命令?

    linux显示内核命令?,地址,发行,信息,工具,电脑,系统,名称,内核,版本,状态,如

    查看linux库类型命令?

    查看linux库类型命令?,系统,工作,信息,状态,电脑,命令,工具,代码,地址,发行,

    linux命令查看包属性?

    linux命令查看包属性?,时间,系统,信息,状态,命令,文件,通讯录,管理,情况,标

    linux网卡类型命令?

    linux网卡类型命令?,网络,系统,地址,信息,设备,状态,服务,名称,名字,网卡,如

    linux内核发行版命令?

    linux内核发行版命令?,发行,系统,地址,软件,设备,信息,内核,版本,工具,公司,l

    加载linux内核的命令?

    加载linux内核的命令?,系统,信息,地址,电脑,发行,设备,简介,平台,发展,基础,l

    linux内核配置的命令?

    linux内核配置的命令?,系统,工作,管理,地址,时间,命令,信息,设备,目录,内核,

    linux内核总调用命令?

    linux内核总调用命令?,工作,地址,系统,信息,管理,策略,命令,目录,时间,基础,

    linux内核编译命令?

    linux内核编译命令?,系统,软件,环境,电脑,内核,最新,下来,官网,体系,名字,在l

    linux注册快捷命令?

    linux注册快捷命令?,名称,第一,发行,软件,网上,名字,命令,快捷键,程序,桌面,l