如何使用从ASP.NET Web表单中的另一个对象内实例化的对象

时间:2013-01-03 16:52:47

标签: c# asp.net oop

这可能是一个非常简单的问题,但在处理从包含类型为另一个类的字段的类创建的对象时,我有点困惑。困扰我的部分是如何使用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}中的联系人对象或我完全错了,这应该以完全不同的方式完成?

希望这是有道理的。

谢谢

3 个答案:

答案 0 :(得分: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;

根据您的需要,两者都应该有效。

答案 1 :(得分:1)

也许是这样的: -

Customer.Contact = new Contact { Phone = phone.Text
                                          , Email = Email.text };

答案 2 :(得分:0)

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

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