Получить свойство returnParameter объекта RuntimeMethodinfo с использованием Reflection (C#)

StackOverflow https://stackoverflow.com/questions/9352066

Вопрос

Предположим, у меня есть следующий класс в 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 имеет свойство под названием имя, которое должно помочь мне с этим, но оно составляет NULL.

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

  • BindingFlags.public | BindingFlags.instance | Bindingflags.declaredonly

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

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

Это было полезно?

Решение

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