いくつかのプロパティを持つクラスがあります。一部の特定のプロパティは、属性で装飾されています。例えば:
public class CoreAddress
{
private ContactStringProperty _LastName;
[ChangeRequestField]
public ContactStringProperty LastName
{
//ContactStringProperty has a method SameValueAs(ContactStringProperty other)
get { return this._LastName; }
}
.....
}
このクラスのすべてのプロパティをウォークスルーし、このカスタム属性を持つプロパティをフィルター処理し、見つかったプロパティのメンバーを呼び出すメソッドをクラスに作成したいと考えています。これは私がこれまでに持っているものです:
foreach (var p in this.GetType().GetProperties())
{
//checking if it's a change request field
if (p.GetCustomAttributes(typeof(ChangeRequestFieldAttribute), false).Count() > 0)
{
MethodInfo method = p.PropertyType.GetMethod("SameValueAs");
//problem here
var res = method.Invoke(null, new object[] { other.LastName });
}
}
このメソッドがプロパティのインスタンス メソッドである場合、(コードのように null ではなく) ターゲットを指定する必要があります。実行時にこのクラス インスタンスの特定のプロパティを取得するにはどうすればよいですか?