使用反射C#通过属性获取私有字段

时间:2011-07-15 14:42:54

标签: c# .net reflection field private

在我的工作中,我使用的是v2.0项目。 我需要知道哪个是与每个属性相关的私有字段

class Foo {

private string _bar;
public string BigBar
{
    get { return _bar; }
}}

有人知道如何用反射检查这种关系

3 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:1)

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

Decompilers

答案 2 :(得分:0)

虽然您只能使用Reflection for Auto-implemented属性执行此操作,但请考虑使用此开源反编译库:http://wiki.sharpdevelop.net/ILSpy.ashx。您可以反编译相关方法并查看它们的作用。