【发布时间】:2009-04-24 02:00:55
【问题描述】:
我有一个带有一些属性的 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 address2, string zipcode) : this(address1, address2, null, null, zipcode)
{ }
public MelissaAddress(string address1, string address2, string city, string state) : this(address1, address2, city, state, null)
{ }
}
【问题讨论】:
-
这是您的实际代码还是只是一些示例?看起来您正在使用容器作为 new() 的替代品。
-
您要在注册时或解析时指定参数吗?
-
我想在解析时指定参数。如果我需要 2 个地址类,每个类都有不同的地址,那么我想将值传递给构造函数中的每个类。
标签: dependency-injection inversion-of-control castle-windsor ioc-container