依赖注入 – Castle Windsor传递构造函数参数
发布时间:2020-12-14 00:52:28 所属栏目:百科 来源:网络整理
导读:我有一个具有几个属性的IAddress类。然后我有一个实现这个接口的具体类型。这个具体类型有一些我可以使用的不同的构造函数。如何在运行时将参数值传递给其中一个构造函数?我不能使用配置文件,因为我将重复使用这个具体类型多次,每次参数值将不同。 IWinds
我有一个具有几个属性的IAddress类。然后我有一个实现这个接口的具体类型。这个具体类型有一些我可以使用的不同的构造函数。如何在运行时将参数值传递给其中一个构造函数?我不能使用配置文件,因为我将重复使用这个具体类型多次,每次参数值将不同。
IWindsorContainer container = new WindsorContainer(new XmlInterpreter()); IAddress address = container.Resolve<IAddress>(); public interface IAddress { string Address1 { get; set; } string Address2 { get; set; } string City { get; set; } string State { get; set; } string ZipCode { get; set; } } class TestAddress : IAddress { private string _address1; private string _address2; private string _city; private string _countyName; private string _state; private string _zipCode; public string Address1 { get { return _address1; } set { _address1 = value; } } public string Address2 { get { return _address2; } set { _address2 = value; } } public string City { get { return _city; } set { _city = value; } } public string State { get { return _state; } set { _state = value; } } public string ZipCode { get { return _zipCode; } set { _zipCode = value; } } public string CountyName { get { return _countyName; } set { _countyName = value; } } public MelissaAddress(string address1,string address2,string city,string state,string zipcode) { Address1 = address1; Address2 = address2; City = city; State = state; ZipCode = zipcode; } public MelissaAddress(string address1,string zipcode) : this(address1,address2,null,zipcode) { } public MelissaAddress(string address1,string state) : this(address1,city,state,null) { } }
您可以使用Resolve(对象参数AsAnonymousType)或Resolve(IDictionary参数)。 Windsor将选择最匹配的构造函数。
例如,这将选择您的第二个构造函数: container.Resolve<IAddress>( new {address1 = "myaddress1",address2 = "myaddress2",zipcode = "myzipcode"} ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |