9
這裏是DynamicObject
DynamicObject表現不同null值
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
類,我消費DynamicDataObject
像下面。
public MainWindow()
{
InitializeComponent();
dynamic person = new DynamicDataObject();
person.FirstName = "Vimal";
person.LastName = "Adams";
person.Address = null;
}
我可以看到person
所有成員和它在_dataDictionary
值,但在同一時間調試視圖不包括具有null
值的成員。因此person.Address
成員在動態視圖集合中不可見(請參見下面的截圖)。任何人都可以請幫我理解爲什麼DynamicObject
在這種情況下行爲有所不同?
有些點開發人員必須有意將屬性設置爲空。這並不意味着它不應該出現在列表中,因爲有一些優化。然後,當我們編寫LINQ時,同樣的行爲也應該起作用。此外,它顯示值類型的成員,如果我設置默認值爲0的int屬性。所以你的假設是錯誤的,例如:person.Age = 0 –
我只是認爲相同,所以我測試它。它似乎只是檢查'null'。 –