繁体   English   中英

等效于Expression.Convert使用Reflection.Emit转换

[英]Equivalent to Expression.Convert using Reflection.Emit

我目前正在尝试扩展使用反射(ILGenerator)创建动态方法的现有应用程序。

我目前在堆栈上有一个对象,此方法需要将该对象转换为与“ parameterType”相同的类型。 我想提供与使用Expression.Convert时相同的转换功能。

public override void EmitParameterResolution(ILGenerator il, Type parameterType)
{
    // il.Emit - Not sure what to do here...
    // Expression.Convert(obj, parameterType)
} 

您可能想要Castclass

public override void EmitParameterResolution(ILGenerator il, Type parameterType)
{
    il.Emit(OpCodes.Castclass, parameterType);
}

您可能还想到了Call ,将ParameterType放在obj之后的堆栈上,然后执行以下操作:

MethodInfo mi = typeof(Convert).GetMethod("ChangeType");
il.Emit(OpCodes.Call, mi);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM