Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用ASP.NET web表单中在另一个对象内实例化的对象_C#_Asp.net_Oop - Fatal编程技术网

C# 如何使用ASP.NET web表单中在另一个对象内实例化的对象

C# 如何使用ASP.NET web表单中在另一个对象内实例化的对象,c#,asp.net,oop,C#,Asp.net,Oop,这可能是一个非常简单的问题,但当涉及到使用从包含字段的类创建的对象时,我有点困惑,其中类型是另一个类。让我困惑的是如何用web表单中的数据填充字段 例如,如果我有一个customer类,该类有一个名为contact的字段,其类型为contact,那么在web表单级别填充该字段的正确方法是什么?目前我正在做如下工作,想知道这是否正确 这是我的客户类别中的代码,联系人是另一个类别 public class Customer { private string firstName; pr

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

例如,如果我有一个
customer
类,该类有一个名为
contact
的字段,其类型为
contact
,那么在web表单级别填充该字段的正确方法是什么?目前我正在做如下工作,想知道这是否正确

这是我的
客户
类别中的代码,
联系人
是另一个类别

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;
}
这是我应该使用
联系人
对象的方式,还是我应该在web表单上实例化一个
联系人
对象,填充它,然后将它分配给
客户
对象中的联系人,还是我完全搞错了,应该以完全不同的方式完成

希望这是有意义的


谢谢

你试过你发布的代码了吗?因为我希望
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;

根据您的需要,两者都可以使用。

可能类似于以下内容:-

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

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


如果有机会,您应该阅读更多关于依赖项注入的内容。

关于Customer.Contact为null的说法是正确的,我在Customer类中初始化它的原因是因为我要在web表单中创建一个新联系人,并使用属性将其分配给Cusomter.Contact。在这一点上,我认为我对这个类以及所有相关类的设计有缺陷,因为当我将Customer传递给将其保存到数据库的方法时,我发现我将一长串属性链接在一起,我想知道这是否是一种糟糕的编码实践。例如:客户、联系人、地址、电子邮件。