private static void Cast(ILGenerator il, Type type, bool valueAsPointer)
{
if (type == typeof(object)) { }
else if (_IsValueType(type))
{
if (valueAsPointer)
{
il.Emit(OpCodes.Unbox, type);
}
else
{
il.Emit(OpCodes.Unbox_Any, type);
}
}
else
{
il.Emit(OpCodes.Castclass, type);
}
}