Получите свойство Name ReturnParameter объекта RuntimeMethodInfo, используя Reflection (C#)

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

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

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

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

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

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

1 ответ

Решение

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