2

假设我在 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;
    }
}

基于反射,我可以获得 getID() (和/或) setID() 方法使用的字段的名称吗?(以防万一,[B_ID])我正在编写一个持久性框架,识别表的键名会很有用,它包含在上述两种方法中。

RuntimeMethodInfo 的 ReturnParameter 属性似乎有一个名为 Name 的属性,它应该可以帮助我解决这个问题,但它正在为空。

为了得到那个 RuntimeMethodInfo 对象,我使用这个 BindingFlags 枚举来获取一个 B 类实例的成员:

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

我怎样才能得到这个字段名?这种行为应该与属性相同。

提前致谢

4

1 回答 1

2

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

[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;
        }
    }
于 2012-02-19T18:59:58.620 回答