我认为一些使用反射的代码可以在编译时进行优化(我不确定我们可以称其为优化)。


例如,在同一方法中调用System.Reflection.MethodInfo.GetCurrentMethod时,总是返回相同的值。
同样,使用类名表示的常量字符串访问类信息也没有理由在运行时完成。


我已经对其进行了测试,结果显示带有反射的代码比没有反射的代码慢约300倍。

是否有任何启用我想要的功能的编译选项?

最佳答案

对于System.Reflection.MethodInfo.GetCurrentMethod的情况。通常用于获取当前方法调用的名称。

如果这是用例

public void Foo()
{
    var method = System.Reflection.MethodInfo.GetCurrentMethod();
    Log.Log(string.Format("I is inside of {0}", method.Name));
}


那你应该用

public static MemberName([CallerMemberName] memberName = null)
{
    return memberName;
}

public void Foo()
{
    Log.Log(string.Format("I is inside of {0}", MemberName()));
}

08-05 12:34