c# – 访问私有字段 - 代码日志

c# – 访问私有字段

是否可以获取或设置私有字段,
我知道它有点愚蠢的问题,但是我想要得到System.Guid.c
那么有一种方法可以访问它,还是应该从struts中复制代码,并将这些字段公开?
您可以使用Quantic Programming提出的反思

var guid = Guid.NewGuid();
var field= typeof (Guid).GetField("_c", BindingFlags.NonPublic |BindingFlags.GetField | BindingFlags.Instance);
var value = field.GetValue(guid);

虽然如果您可以首先将guid转换为字节数组,我可以建议:

var guid = Guid.NewGuid();
var c = BitConverter.ToInt16(guid.ToByteArray(), 6);

后一种方法避免使用反射。

编辑

你提到需要能够设置的值,你仍然可以避免反思:

var guid = Guid.NewGuid();
var guidBytes = guid.ToByteArray();

// get value
var c = BitConverter.ToInt16(guidBytes, 6);

// set value
Buffer.BlockCopy(BitConverter.GetBytes(c), 0, guidBytes, 6, sizeof(Int16));
var modifiedGuid = new Guid(guidBytes);
http://stackoverflow.com/questions/10862747/access-private-fields

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 访问私有字段