内容简介:如果要实例化的类只有一个构造函数, 则使用方法很简单使用方法如下:其中配置文件为如果DatabaseLogger类中的有两个构造函数, 代码如下
如果要实例化的类只有一个构造函数, 则使用方法很简单使用方法如下:
using (IUnityContainer container =new UnityContainer())
{
UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(container); //...
ILogger logger = container.Resolve<ILogger>("DatabaseLogger");
return logger;
}
其中配置文件为
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration"/> </configSections> <unity> <containers> <container> <types> <type type="Bery.ILogger, UnityStudy" mapTo="Bery.DatabaseLogger, UnityStudy" name="DatabaseLogger"> </type> </types> </container> </containers> </unity> </configuration>
如果DatabaseLogger类中的有两个构造函数, 代码如下
public DatabaseLogger()
{
}
public DatabaseLogger(string name)
{
}
则Unity自动使用参数最多的构造函数进行创建对象, 会抛出以下异常:
Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type ="Bery.ILogger", name ="DatabaseLogger". Exception occurredwhile:while resolving. Exception is: InvalidOperationException - The type String cannot be constructed. You must configure the container to supplythis value.
如果您想让它使用无参的构造函数创建, 则要使用[InjectionConstructor]特性进行修饰无参的构造函数,
[InjectionConstructor]
public DatabaseLogger()
{
}
若您想使用带参数的构造函数创建对象, 除了在构造函数上使用[InjectionConstructor]外, 还要在创建时传递参数,代码如下
using (IUnityContainer container =new UnityContainer())
{
UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(container);
ILogger logger = container.Resolve<ILogger>("DatabaseLogger",
new ParameterOverrides{
{"name","logName"}
});
return logger;
以上所述就是小编给大家介绍的《Unity中使用多构造函数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python Cookbook 中文版,第 3 版
David M. Beazley、Brian K. Jones / 陈舸 / 人民邮电出版社 / 2015-5-1 / 108.00元
《Python Cookbook(第3版)中文版》介绍了Python应用在各个领域中的一些使用技巧和方法,其主题涵盖了数据结构和算法,字符串和文本,数字、日期和时间,迭代器和生成器,文件和I/O,数据编码与处理,函数,类与对象,元编程,模块和包,网络和Web编程,并发,实用脚本和系统管理,测试、调试以及异常,C语言扩展等。 本书覆盖了Python应用中的很多常见问题,并提出了通用的解决方案。......一起来看看 《Python Cookbook 中文版,第 3 版》 这本书的介绍吧!