能力值:
( LV2,RANK:10 )
|
-
-
2 楼
别人的动态方法好像直接以bytes为对象,而非构造IL
void DoDynamicMethod(byte[]methodBytes)
{
....
}
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
那是别人不想让人省事儿地看清楚,如果我写成这样:
static refInvokeHand<bool, string, string[]> GetRefInvoke()
{
Type[] methodArgs = { typeof(string), typeof(string).MakeByRefType(), typeof(string[]).MakeByRefType() };
DynamicMethod reftest2 = new DynamicMethod("reftest2", typeof(bool), methodArgs, typeof(Form1).Module);
DynamicILInfo info = reftest2.GetDynamicILInfo();
byte[] code = { 0x00, 0x03, 0x03, 0x50, 0x02,
0x28, 0x36, 0x00, 0x00, 0x0a, //6
0x51, 0x04, 0x50, 0x16, 0x04,
0x50, 0x16, 0x9a, 0x02,
0x28, 0x36, 0x00, 0x00, 0x0a, //21
0xa2, 0x17, 0x0a, 0x2b, 0x00,
0x06, 0x2a };
....
...
...
refInvokeHand<bool, string, string[]> invokerefTest2 = (refInvokeHand<bool, string, string[]>)reftest2.CreateDelegate(typeof(refInvokeHand<bool, string, string[]>));
return invokerefTest2;
}
private bool refTest2(string a, ref string b, ref string[] c)
{
refInvokeHand myHand=GetRefInvoke();
return myHand(a,ref b,ref c); //此处运行时异常:方法标记不正确}
对于上述问题是同样的,但对于解答问题的网友来说,却要多费些周折.这个问题和方法体用何种形式表示没关系的.
谢谢你的热心,楼上的朋友.
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
[QUOTE=ssyfzy;860211]别人的动态方法好像直接以bytes为对象,而非构造IL
void DoDynamicMethod(byte[]methodBytes)
{
....
}[/QUOTE]
而且从你例举的例子来看,如果不是在某处有内定的静态变量可以被当参来利用的话,根本就是无参方法.
|