使用Reflection(C#)获取RuntimeMethodInfo对象的ReturnParameter的Name属性

时间:2012-02-19 18:47:21

标签: c# reflection methodinfo bindingflags

假设我在C#中有以下课程:

public class B : A
{
    public Int32 B_ID;
    public String B_Value;

    public Int32 getID()
    {
        return B_ID;
    }

    public void setID(Int32 value)
    {
        B_ID = value;
    }
}

基于Reflection,我可以获取getID()(和/或)setID()方法使用的字段的名称吗? (如果是[B_ID]) 我正在编写一个持久性框架,识别一个表的关键名称会很有用,它被上面的两个方法所包含。

似乎RuntimeMethodInfo的ReturnParameter属性有一个名为Name的属性,它可以帮助我解决这个问题,但是它会返回null。

要获取该RuntimeMethodInfo对象,我将使用此BindingFlags枚举获取B类实例的成员:

  • BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly

如何获取此字段名称?此行为应与属性相同。

提前致谢

1 个答案:

答案 0 :(得分:2)

我担心这是不可能的,因为字段名称是已实现代码的一部分,反射不知道如何检索它。 持久化框架通常使用一种映射来提供此类信息。例如,您可以使用xml文件,或者可以在字段上使用attirbutes将它们作为表的键或列引入,如下所示:

[Table(name="MyTable")]    
public class B : A
    {

[Key(column_name="id")]    
public Int32 B_ID;
        public String B_Value;

        public Int32 getID()
        {
            return B_ID;
        }

        public void setID(Int32 value)
        {
            B_ID = value;
        }
    }