【发布时间】:2013-10-21 11:45:49
【问题描述】:
通过下面的课程,我尝试得到:
- 字段名称
- 价值
我试过这段代码:
Dictionary<string, string> listField =
membership.GetType()
.GetFields(BindingFlags.NonPublic)
.ToDictionary(f => f.Name,
f => (string)f.GetValue(null));
但我的字典里什么都没有。
有什么想法吗?
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="MyClass", Namespace="http://model.common.party.ent.gfdi.be")]
[System.SerializableAttribute()]
public partial class MyClass : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
[System.NonSerializedAttribute()]
private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
[System.Runtime.Serialization.OptionalFieldAttribute()]
private string firstName;
[System.Runtime.Serialization.OptionalFieldAttribute()]
private string lastName;
[System.Runtime.Serialization.OptionalFieldAttribute()]
private System.Nullable<long> fieldA;
[System.Runtime.Serialization.OptionalFieldAttribute()]
private bool fieldB;
[System.Runtime.Serialization.OptionalFieldAttribute()]
private int fieldC;
}
【问题讨论】:
-
我认为您可能缺少一些绑定标志,我不是反射大师,但我记得必须指定
BindingFlags.Instance才能获取实例级别字段(反之亦然) -
它们是私有字段。你为什么要序列化/反序列化它们,为什么要获取它们的值?改为公开。
-
更亲近的人不仅是找到私有的,而且是找到私有的 AND 值
标签: c# reflection