0

这可能是一个非常简单的问题,但是当涉及到使用从包含类型是另一个类的字段的类创建的对象时,我有点困惑。让我困惑的部分是如何使用来自 Web 表单的数据填充该字段。

例如,如果我有一个customer类,其中有一个名为contactwhich is of type的字段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对象的方式,还是应该contact在 Web 表单上实例化一个对象,填充它,然后将其分配给customer对象中的联系人,或者我完全错了,这应该以完全不同的方式完成方式?

希望这是有道理的。

谢谢

4

3 回答 3

1

您是否尝试过发布的代码?因为我希望你从未customer.Contactnull它创建实例。

因此,您可以像这样修复现有代码:

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;

根据您的需要,任何一个都应该工作。

于 2013-01-03T16:57:41.720 回答
1

也许是这样的: -

Customer.Contact = new Contact { Phone = phone.Text
                                          , Email = Email.text };
于 2013-01-03T16:58:36.270 回答
0

Customer 类不应该负责创建 Contact 类,它应该从外部获取 Contact 实例(通过构造函数或公共属性)。

如果有机会,您应该阅读有关依赖注入的更多信息。

于 2013-01-03T16:59:42.227 回答