通过c#反射属性获取私有字段

本文关键字:字段 获取 属性 反射 通过 | 更新日期: 2023-09-27 18:02:32

在我的工作中,我使用一个v2.0项目。我需要知道哪个是与每个属性

相关的私有字段
class Foo {
private string _bar;
public string BigBar
{
    get { return _bar; }
}}

有人知道我怎么检查这个关系与反射

通过c#反射属性获取私有字段

如果您正在寻找auto-like属性的支持字段,那么唯一的方法是使用Mono之类的工具查看生成的IL。比如Cecil。

您必须查找特定的IL模式,并且还必须检查是否只在属性中使用了backing字段,而不在其他地方使用。

模式将是为这段代码生成的IL:

private string _foo;
public string Foo { get { return _foo; } set { _foo = value; } }

(getset是可选的,但必须至少存在一个)

您需要的是一个反编译器来查看类的内部工作:

解码器

虽然您只能对自动实现属性的反射执行此操作,但请考虑使用这个开源反编译库:http://wiki.sharpdevelop.net/ILSpy.ashx。您可以反编译相关的方法,看看它们是做什么的。