反射があまりにも遅くはない...(それはちょうど少し遅くvirtual
よりもメソッドの呼び出しでなければなりません)その後:
public static class MyClassAccessor
{
public static readonly Func<MyClass, int> GetMyProperty;
public static readonly Action<MyClass, int> SetMyProperty;
static MyClassAccessor()
{
var prop = typeof(MyClass).GetProperty("MyProperty", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
GetMyProperty = (Func<MyClass, int>)Delegate.CreateDelegate(typeof(Func<MyClass, int>), prop.GetMethod);
SetMyProperty = (Action<MyClass, int>)Delegate.CreateDelegate(typeof(Action<MyClass, int>), prop.SetMethod);
}
}
そして、あなたは次のように使用します。
var mc = new MyClass();
MyClassAccessor.SetMyProperty(mc, 5);
Console.WriteLine(MyClassAccessor.GetMyProperty(mc));
反射を使用していますか? – xanatos
はいそれは効率的でなければなりません –
反射は強く型付けされたデリゲートにバックアップできます...その速度は 'virtual'呼び出しと似ているはずです。 – xanatos