Obtenga la propiedad de nombre de ReturnParameter de un objeto runtimemethodinfo usando reflexión (C#)

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

Pregunta

Supongamos que tengo la siguiente clase en 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;
    }
}

Según la reflexión, ¿puedo obtener el nombre del campo utilizado por el método getId () (y/o) setid ()? (En caso de, [b_id]) Estoy codificando un marco de persistencia y sería útil identificar el nombre clave de una tabla, que está encerrado por ambos métodos anteriores.

Parece que la propiedad de Runtimemethodinfo de RuntimeMeMeMeTinfo tiene una propiedad llamada Nombre que debería ayudarme con esto, pero está llegando nulo.

Para obtener ese objeto runtimemethodinfo, estoy obteniendo miembros de una instancia de clase B utilizando esta enums de BindingFlags:

  • BindingFlags.Public | BindingFlags.Instance | BindingFlags.Claredonly

¿Cómo puedo obtener este nombre de campo? Este comportamiento debe ser el mismo con las propiedades.

Gracias por adelantado

¿Fue útil?

Solución

Me temo que eso es imposible porque el nombre del campo es la parte del código implementado y la reflexión no tiene idea de cómo recuperarlo. Los marcos persistentes generalmente usan un tipo de mapeo para proporcionar dicha información. Por ejemplo, puede usar un archivo XML o puede usar attirbutes sobre sus campos para introducirlos como clave o columnas de su tabla algo así:

[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;
        }
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top