110,538
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Reflection;
using System.Reflection.Emit;
namespace winfromTest
{
public class Test
{
private delegate TReturn TwoParameter<TReturn, TParameter0, TParameter1>
(TParameter0 p0, TParameter1 p1);
public T Mul<T>(T t1, T t2)
{
Type[] methodArgs = { typeof(T), typeof(T) };
DynamicMethod multiplyHidden = new DynamicMethod(
"",
typeof(T),
methodArgs,
typeof(Test).Module);
ILGenerator il = multiplyHidden.GetILGenerator();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Ldarg_1);
il.Emit(OpCodes.Mul);
il.Emit(OpCodes.Ret);
TwoParameter<T, T, T> invoke = (TwoParameter<T, T, T>)
multiplyHidden.CreateDelegate(
typeof(TwoParameter<T, T, T>)
);
return invoke(t1, t2);
}
}
}