我认为一些使用反射的代码可以在编译时进行优化(我不确定我们可以称其为优化)。
例如,在同一方法中调用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()));
}