0

我该如何编写这个 C# 方法

public bool CheckIsLocal()
{
    return HttpContext.Current.Request.IsLocal;
}

使用 C# Reflection.Emit?

此方法只是一个示例,我的目的是了解如何编写代码以使用 C# Reflection.Emit 访问相关成员。

4

1 回答 1

2
public Func<bool> GenerateCheckIsLocal() {

            var dynamicMethod = new DynamicMethod("CheckIsLocal", typeof(bool), Type.EmptyTypes, true);

            var il = dynamicMethod.GetILGenerator();

            il.Emit(OpCodes.Call, typeof(HttpContext).GetProperty("Current").GetMethod);
            il.Emit(OpCodes.Call, typeof(HttpContext).GetProperty("Request").GetMethod);
            il.Emit(OpCodes.Call, typeof(HttpRequest).GetProperty("IsLocal").GetMethod);
            il.Emit(OpCodes.Ret);

            return dynamicMethod.CreateDelegate(typeof(Func<bool>)) as Func<bool>;
        }

我认为这样的事情应该可以工作。

于 2013-09-06T03:51:30.887 回答