0

これはおそらく非常に単純な質問ですが、タイプが別のクラスであるフィールドを含むクラスから作成されたオブジェクトを操作することになると、少し混乱します。私を混乱させる部分は、フィールドに Web フォームのデータを入力する方法です。

たとえば、タイプcustomerが というフィールドを持つクラスがある場合、これを Web フォーム レベルで入力する適切な方法は何ですか? 現在、私は次のようにしていますが、これが正しいかどうか知りたいです。contactContact

これは私の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;
}

これは私がオブジェクトを操作する方法ですか、それともWeb フォームでオブジェクトcontactをインスタンス化し、それを入力してからオブジェクトの連絡先に割り当てる必要がありますか、それとも完全に間違っているので、これはまったく別の方法で行う必要があります仕方? contactcustomer

これが理にかなっていることを願っています。

ありがとう

4

3 に答える 3

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;

ニーズに応じて、どちらでも機能するはずです。

于 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 に答える