2

getリフレクションを使用して、とメソッドの両方を持つプロパティのみを取得し、 のみを持つsetものは無視しますget。私がやろうとしているのは、ユーザーが変更できる変数のリストをユーザーに提供することです。そのため、getメソッドのみを持つプロパティを表示することは誤解を招きます。

以下のコードでは、ユーザーのみが表示されNameます。UniqueIDまたは、両方を表示することもできますが、変更できないことがわかるようにグレー表示します。

public Int64 UniqueID
{
    get { return this.uniqueID; }
}

public String Name
{
    get { return this.name; }
    set { this.name = value; }
}

背景情報: C# 4.0 を使用しています。

4

2 に答える 2

4

CanReadおよびCanWriteプロパティを使用できます。

Type type = ...
var readWriteProps = type.GetProperties()
                         .Where(p => p.CanRead && p.CanWrite); 

上記のクエリは、パブリック アクセサーを持つパブリック プロパティのみを検索することに注意してください。

于 2012-01-15T06:26:40.300 に答える
3

あなたが探しているプロパティはPropertyInfo.CanWrite次のように実装できると思います。これを次のように実装して、Get と Set の両方を次のようにチェックします。

if (propInfo.CanWrite && propInfo.CanRead)
于 2012-01-15T06:27:14.607 に答える