如何访问DataRowChangeEventArgs非公共成员。像_rowID,LastChangedColumn等。
我尝试了反思,但我无法为任何非公开成员获得价值。
答案 0 :(得分:0)
DataRowChangeEventArgs
没有像_rowID这样的非公开成员。
我认为您的意思是DataRow
,可以从DataRowChangeEventArgs
中检索到
对于字段,请尝试以下操作:
var value = typeof(DataRow).GetField("_rowID", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(dataRowChangeEventArgs.Row);
对于属性,请尝试以下操作:
var value = typeof(DataRow).GetProperty("rowID", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(dataRowChangeEventArgs.Row);
如果您在短时间内经常调用这段代码,我建议创建一个委托(显着提高性能)
var getDel = (Func<DataRow, long>)Delegate.CreateDelegate(typeof(Func<DataRow,long>), typeof(DataRow).GetProperty("rowID", BindingFlags.Instance | BindingFlags.NonPublic).GetMethod);
var value = getDel(dataRowChangeEventArgs.Row);
对于Fields,这有点复杂。参见Is there a way to create a delegate to get and set values for a FieldInfo?