这可能是一个非常简单的问题,但在处理从包含类型为另一个类的字段的类创建的对象时,我有点困惑。困扰我的部分是如何使用Web表单中的数据填充字段。
例如,如果我的customer
类有一个名为contact
的字段,其类型为Contact
,那么在Web表单级别填充此字段的正确方法是什么?目前我正在按照以下方式进行,并想知道这是否正确。
这是我customer
班级的代码,contact
是另一个班级。
public class Customer
{
private string firstName;
private string lastName'
private string notes;
private Contact contact;
public Customer()
{
this.contact = new Contact();
}
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
public string Notes
{
get { return notes; }
set { notes = value; }
}
public Contact Contact
{
get { return contact; }
set { contact = value; }
}
}
我的表格中的代码
private Customer customer;
public WebFormSample()
{
customer = new AddressBook.Customer();
}
protected void addButton_Click(object sender, EventArgs e)
{
customer.FirstName = firstName.Text;
customer.LastName = lastName.Text;
customer.Contact.Phone = phone.Text;
customer.Contact.Email = Email.Text;
}
这是我应该使用contact
对象的方式,还是应该在Web表单上实例化contact
对象,填充它然后将其分配给{{1}中的联系人对象或我完全错了,这应该以完全不同的方式完成?
希望这是有道理的。
谢谢
答案 0 :(得分:1)
您是否尝试过发布的代码?我希望customer.Contact
为null
,因为您从未为其创建过实例。
因此,您可以修复现有代码:
customer.Contact = new Contact();
customer.Contact.Phone = phone.Text;
customer.Contact.Email = Email.Text;
或者你可以按照你的要求去做:
var contact = new Contact();
contact.Phone = phone.Text;
contact.Email = Email.Text;
customer.Contact = contact;
根据您的需要,两者都应该有效。
答案 1 :(得分:1)
也许是这样的: -
Customer.Contact = new Contact { Phone = phone.Text
, Email = Email.text };
答案 2 :(得分:0)
客户类不应该负责创建Contact类,它应该从外部(通过构造函数或公共属性)接受Contact实例。
如果有机会,您应该阅读有关依赖注入的更多信息。