1

I have come across a very weird problem. I am trying to set a property of a particular object assigning it a value of another project via

/* PropertyInfo.SetValue(object obj, object val, object[] index) */

propertyInfo.SetValue(obj, val, null) 

both obj and val are reference type but the problem is that I want the value of obj's property to change when the value of val changes. But unfortunately this doesn't happen. Is there any way to achieve what I want to do.

Regards

Umair

4

1 に答える 1

1

まず第一に、渡した変数の内容を変更するたびにプロパティを自動的に変更したい場合は、いいえ、そうはなりませんSetValue。または同様のコードを再度呼び出す必要があります。

一方、インスタンスを置き換えるのではなく、インスタンスの内容を変更する場合は、それが発生するはずです。

言い換えれば、これはうまくいきます:

TestClass val = new TestClass();
val.Name = "Before";
propertyInfo.SetValue(obj, val, null);
val.Name = "After";

インスタンスのコピーを作成するのではなく、インスタンスへの参照を共有するだけなので、変数valと問題のプロパティの両方から変更を確認できます。

ただし、これは機能しません。

TestClass val = new TestClass();
val.Name = "Before";
propertyInfo.SetValue(obj, val, null);
val = new TestClass();
val.Name = "After";

ここでは、2 つのインスタンスがあり、1 つはプロパティによって参照され、もう 1 つは変数によって参照されます。プロパティに新しいインスタンスを自動的に取得させる方法はないため、これを行う別の方法を見つける必要があります。

于 2011-05-22T21:53:30.647 に答える