【发布时间】:2020-11-12 16:10:27
【问题描述】:
我正在编写一个比较某个类的两个对象的属性,以进一步列出差异。
Class oldObj, newObj;
//some initiation of above
Class classObject = new Class();
var objectKeys = classObject .GetType().GetProperties().ToList();
objectKeys.ForEach(key => {
var previousKeyValue = key.GetValue(oldObj);
var newKeyValue = key.GetValue(newObj);
if (!Equals) {...}
});
在特殊情况下,newObj 或 oldObj 可以为空。
我的问题是,在这种情况下:key.GetValue(null) 我收到 CS0120 异常 - “非静态方法需要一个目标”。
查看 PropertyInfo 选项(来自元数据):
public object? GetValue(object? obj);
我假设它能够处理对象为null 的这种情况,例如返回 null 作为它的值。
您能否解释一下这是否是这段代码的正确行为,或者我在使用 null 时做错了什么? 在这种情况下,我可能会在 ForEach 之前进行一些验证对象是否为空并编写单独的比较代码来处理这种情况。
【问题讨论】:
标签: c# propertyinfo