Получите свойство Name ReturnParameter объекта RuntimeMethodInfo, используя Reflection (C #) - PullRequest
2 голосов
/ 19 февраля 2012

Предположим, у меня есть следующий класс в 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]) Я кодирую постоянную среду, и было бы полезно определить имя ключа таблицы, которое заключено в обоих методах выше.

Кажется, что свойство ReturnParameter RuntimeMethodInfoесть свойство с именем Name, которое должно помочь мне в этом, но оно становится пустым.

Чтобы получить этот объект RuntimeMethodInfo, я получаю члены экземпляра класса B, используя перечисления BindingFlags:

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

Как получить имя этого поля?Это поведение должно быть таким же со свойствами.

Заранее спасибо

1 Ответ

2 голосов
/ 19 февраля 2012

Боюсь, это невозможно, потому что имя поля является частью реализованного кода, а отражение не имеет ни малейшего понятия, как его получить. Постоянные фреймворки обычно используют своего рода отображение для предоставления такой информации. Например, вы можете использовать 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;
        }
    }
...