これはDynamicDataObjectから派生したクラスですDynamicObject
public class DynamicDataObject : DynamicObject
{
private readonly Dictionary<string, object> _dataDictionary = new Dictionary<string, object>();
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return _dataDictionary.TryGetValue(binder.Name, out result);
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
if (!_dataDictionary.ContainsKey(binder.Name))
{
_dataDictionary.Add(binder.Name, value);
return true;
}
return false;
}
public override IEnumerable<string> GetDynamicMemberNames()
{
return _dataDictionary.Keys;
}
}
そして、私はDynamicDataObject以下のように消費しています。
public MainWindow()
{
InitializeComponent();
dynamic person = new DynamicDataObject();
person.FirstName = "Vimal";
person.LastName = "Adams";
person.Address = null;
}
のすべてのメンバーpersonとその値を_dataDictionary表示できますが、同時にデバッガー ビューではnull値を持つメンバーが除外されます。そのperson.Addressメンバーは動的ビュー コレクションには表示されません (下のスクリーンショットを参照してください)。DynamicObjectこのシナリオで動作が異なる理由を理解するのを手伝ってくれる人はいますか?
