4

Jon Skeet の記事Making Reflection Fly and explore delegatesをガイドとして使用して、Delegate.CreateDelegate メソッドを使用してプロパティをデリゲートとして複製しようとしています。クラスの例を次に示します。

public class PropertyGetter
{
    public int Prop1 {get;set;}
    public string Prop2 {get;set;}

    public object GetPropValue(string propertyName)
    {
        var property = GetType().GetProperty(propertyName).GetGetMethod();
        propertyDelegate = (Func<object>)Delegate.CreateDelegate(typeof(Func<object>), this, property);

        return propertyDelegate();
    }
}

私が抱えている問題は、呼び出してパラメーターとしてGetPropValue渡すと、呼び出し時にメッセージが表示されることです 。これは、構造体を含むプリミティブ/値型を返すプロパティを使用すると発生します。"Prop1"ArgumentExceptionDelegate.CreateDelegate"Cannot bind to the target method because its signature or security transparency is not compatible with that of the delegate type."

ここで参照型と値型の両方を使用できる方法を知っている人はいますか?

4

1 に答える 1