System.Dynamic.DynamicMetaObject.Create C# (CSharp) Method

Create() public static method

Creates a meta-object for the specified object.
public static Create ( object value, Expression expression ) : DynamicMetaObject
value object The object to get a meta-object for.
expression System.Linq.Expressions.Expression The expression representing this during the dynamic binding process.
return DynamicMetaObject
        public static DynamicMetaObject Create(object value, Expression expression)
        {
            ContractUtils.RequiresNotNull(expression, nameof(expression));

            IDynamicMetaObjectProvider ido = value as IDynamicMetaObjectProvider;
            if (ido != null)
            {
                var idoMetaObject = ido.GetMetaObject(expression);

                if (idoMetaObject == null ||
                    !idoMetaObject.HasValue ||
                    idoMetaObject.Value == null ||
                    (object)idoMetaObject.Expression != (object)expression)
                {
                    throw System.Linq.Expressions.Error.InvalidMetaObjectCreated(ido.GetType());
                }

                return idoMetaObject;
            }
            else
            {
                return new DynamicMetaObject(expression, BindingRestrictions.Empty, value);
            }
        }
    }

Usage Example

 private static DynamicMetaObject[] CreateArgumentMetaObjects(object[] args, ReadOnlyCollection <ParameterExpression> parameters)
 {
     if (args.Length != 1)
     {
         DynamicMetaObject[] objArray = new DynamicMetaObject[args.Length - 1];
         for (int i = 1; i < args.Length; i++)
         {
             objArray[i - 1] = DynamicMetaObject.Create(args[i], parameters[i]);
         }
         return(objArray);
     }
     return(DynamicMetaObject.EmptyMetaObjects);
 }
All Usage Examples Of System.Dynamic.DynamicMetaObject::Create