保護されたセッターを持つために私の基本クラスのプロパティを設定しました。 これは正常に動作し、派生クラスのコンストラクタでプロパティを設定できますが、PropertyDescriptorCollectionを使用してこのプロパティを設定しようとすると設定されませんが、他のすべてのプロパティでも機能します。派生クラスがPropertyDescriptorCollection.SetValueを使用して保護されたセッターにアクセスできない
保護されたAccess修飾子をすべて削除しても問題ありませんが、今は保護されていません。任意の入力に感謝します。
class base_a
{
public string ID { get; protected set; }
public virtual void SetProperties(string xml){}
}
class derived_a : base_a
{
public derived_a()
{
//this works fine
ID = "abc"
}
public override void SetProperties(string xml)
{
PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(this);
//this does not work...no value set.
pdc["ID"].SetValue(this, "abc");
}
}
(あなたが
using System.Reflection;
が必要になります)このそれとも単に
をお試しくださいあなたは "作業"?それは何をするためのものか? – svick
svick、プロパティを検査したときに値が設定されていませんでした。スローされた例外はありませんでした。 – Brad
これは、セットが保護されているためと思われますが、この場合、VSヘルプには何も見つかりません。私はまた警告も例外もなく何もしないのが好きです。 –