using System;
using System.Linq;
using SLE = System.Linq.Expressions;
-
-#if NET_4_0 || MOBILE_DYNAMIC
using System.Dynamic;
-#endif
namespace Mono.CSharp
{
//
public class RuntimeValueExpression : Expression, IDynamicAssign, IMemoryLocation
{
-#if !NET_4_0 && !MOBILE_DYNAMIC
- public class DynamicMetaObject
- {
- public TypeSpec RuntimeType;
- public TypeSpec LimitType;
- public SLE.Expression Expression;
- }
-#endif
readonly DynamicMetaObject obj;
return base.MakeExpression (ctx);
#else
-#if NET_4_0 || MOBILE_DYNAMIC
if (type.IsStruct && !obj.Expression.Type.IsValueType)
return SLE.Expression.Unbox (obj.Expression, type.GetMetaInfo ());
if (((SLE.ParameterExpression) obj.Expression).IsByRef)
return obj.Expression;
}
- #endif
return SLE.Expression.Convert (obj.Expression, type.GetMetaInfo ());
#endif
return this;
}
-#if NET_4_0 || MOBILE_DYNAMIC
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
#if STATIC
return SLE.Expression.Block (expr.MakeExpression (ctx), SLE.Expression.Default (type.GetMetaInfo ()));
#endif
}
-#endif
}
#endregion