对内部、重载和带ref参数方法的反思



如何使用。net v1.1获取方法System.Web.Configuration.MachineKey.GetEncodedData的引用?

用下面的代码返回null:

Type t = typeof(System.Web.Configuration.HttpCapabilitiesBase)
    .Assembly
    .GetType("System.Web.Configuration.MachineKey");
MethodInfo method = t.GetMethod("GetEncodedData",
    BindingFlags.NonPublic | BindingFlags.Static, 
    null,
    new Type[] { typeof(byte[]), typeof(byte[]), typeof(int), typeof(int) },
    new ParameterModifier[0]
);

好的,听起来问题是。net 1.1中没有等价的Type.MakeByRef

可能能够使用Type.GetType("System.Int32&")得到:

MethodInfo method = t.GetMethod("GetEncodedData",
    BindingFlags.NonPublic | BindingFlags.Static, 
    null,
    new Type[] { typeof(byte[]), typeof(byte[]),
                 typeof(int), Type.GetType("System.Int32&" },
    new ParameterModifier[0]
);

或者,您总是可以使用ref int参数创建您自己的方法(例如,您可以使用GetMethods),并使用参数类型。讨厌的,但是…

当然,所有这些一开始都让人感觉非常脆弱。我假设您有一个非常好的理由想要在一个相当过时的框架版本上调用一个内部方法…

相关内容

  • 没有找到相关文章

最新更新