Reflection(C#)を使用してRuntimemethodinfoオブジェクトのRepretParameterの名前のプロパティを取得します

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])私は永続的なフレームワークをコーディングしていますが、上記の両方の方法で囲まれたテーブルのキー名を識別することは有用です。

RuntimemethodinfoのReturnParameterプロパティには、これに役立つ名前と呼ばれるプロパティがあるようですが、それはnullをコミットしています。

そのruntimemethodinfoオブジェクトを取得するために、このバインディングフラグ列挙を使用してBクラスのインスタンスのメンバーを取得します。

  • 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