C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: プロパティ参照型


(過去ログ 85 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■50831 / inTopicNo.1)  プロパティ参照型
  
□投稿者/ 匿名希望 (1回)-(2010/06/19(Sat) 11:38:05)

分類:[.NET 全般] 

プロパティにクラスを設定している場合、
そのクラスのさらにプロパティの値を変更した場合は、そのクラスのプロパティのsetアクセサには
行きますが、大元のクラスのプロパティsetアクセサには行きません。
(インスタンスを変更していないので当然ですが。。。)
なんとかsetアクセサに行くようにできないでしょうか


 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            SetObject setObject = new SetObject();

            setObject.TestProperty.Text="a";
        }
    }

    public class TestFormat
    {
        private string _Text;
        public string Text
        {
            get
            {
                return _Text;
            }
            set
            {
                _Text = value;   ←ここへは来る
            }            
        }
        public string Text2 { get; set; }       
    }

    public class SetObject
    {
        TestFormat _TestProperty = new TestFormat();
        public TestFormat TestProperty
        {
            get
            {
                return _TestProperty;
            }
            set
            {
                _TestProperty = value;   ←ここへ来ない
            }  
        }
    }

引用返信 編集キー/
■50832 / inTopicNo.2)  Re[1]: プロパティ参照型
□投稿者/ 魔界の仮面弁士 (1676回)-(2010/06/19(Sat) 12:00:36)
2010/06/19(Sat) 12:16:00 編集(投稿者)

No50831 (匿名希望 さん) に返信
> setObject.TestProperty.Text="a";
このコードで呼ばれるのは、
 ・SetObject.TestProperty の get
 ・TestFormat.Text の set
ですね。

> なんとかsetアクセサに行くようにできないでしょうか
意図がさっぱり見えないのですが、それは何のために必要なのでしょうか?
目的を伝えてもらえれば、別の解決策があるかも知れません。

> (インスタンスを変更していないので当然ですが。。。)
一応、TestPropertyのget内にて強制的に再setするコードを追加すれば、
 setObject.TestProperty.Text="a";
のコードでもTestPropertyのset部が呼ばれるようにはなりますが、止めておいた方が良いでしょう。
引用返信 編集キー/
■50845 / inTopicNo.3)  Re[2]: プロパティ参照型
□投稿者/ Azulean (570回)-(2010/06/20(Sun) 08:15:26)
目的次第ですが、TestFormat の中身が変更されたときに SetObject で何かしたいのであれば、TestFormat にイベントを用意するというのも手です。

1.TestFormat で何か set される。
2.TestFormat でイベント呼び出し。
3.SetObject でイベントを受けて、何らかの更新処理。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -