2012-02-19 7 views
2

Пусть у меня есть следующий класс в C#:Получить ReturnParameter по Имя свойства объекта RuntimeMethodInfo с помощью отражения (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, которое должно помочь мне с этим, но оно запустило null.

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

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

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

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

ответ

2

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

Во-первых, спасибо за ответ, это было так полезно для меня. Извините за мой отложенный ответ, я слишком много работаю над этим вопросом, пока вы не покажете мне самый простой способ, используя пользовательские атрибуты. Исходя из этого, эти методы getID и setID больше не нужны. +1 – rsfurlan90

 Смежные вопросы

  • Нет связанных вопросов^_^