本文整理匯總了C#中System.Dynamic.DynamicMetaObject.SelectAll方法的典型用法代碼示例。如果您正苦於以下問題:C# DynamicMetaObject.SelectAll方法的具體用法?C# DynamicMetaObject.SelectAll怎麽用?C# DynamicMetaObject.SelectAll使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類System.Dynamic.DynamicMetaObject
的用法示例。
在下文中一共展示了DynamicMetaObject.SelectAll方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: FallbackInvokeMember
public override DynamicMetaObject FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion)
{
try
{
return new DynamicMetaObject(
(Static.GetTargetType(target.Value)
.Null(t => YacqExpression.TypeCandidate(this._symbols, t))
?? target.Expression.Reduce(this._symbols).TryConvert(target.RuntimeType)
)
.Method(this._symbols, this.Name,
args.SelectAll(o => o.Expression.Reduce(this._symbols).TryConvert(o.RuntimeType))
)
.Reduce(this._symbols)
.If(e => e.Type == typeof(void), e =>
Expression.Block(e, Expression.Default(typeof(Object)))
)
.If(e => e.Type.IsValueType, e =>
e.TryConvert(typeof(Object))
),
target.Restrictions
);
}
catch (Exception ex)
{
return errorSuggestion
?? new DynamicMetaObject(
Expression.Throw(Expression.Constant(ex), typeof(Object)),
BindingRestrictions.Empty
);
}
}
示例2: FallbackSetIndex
public override DynamicMetaObject FallbackSetIndex(DynamicMetaObject target, DynamicMetaObject[] indexes, DynamicMetaObject value, DynamicMetaObject errorSuggestion)
{
try
{
return new DynamicMetaObject(
YacqExpression.Function(this._symbols, "=",
YacqExpression.Function(this._symbols, ".",
target.Expression.Reduce(this._symbols).TryConvert(target.RuntimeType),
YacqExpression.Vector(this._symbols,
indexes.SelectAll(o => o.Expression.Reduce(this._symbols).TryConvert(target.RuntimeType))
)
),
value.Expression.Reduce(this._symbols).TryConvert(target.RuntimeType)
).Reduce(this._symbols).TryConvert(typeof(Object)),
target.Restrictions
);
}
catch (Exception ex)
{
return errorSuggestion
?? new DynamicMetaObject(
Expression.Throw(Expression.Constant(ex), typeof(Object)),
BindingRestrictions.Empty
);
}
}
示例3: FallbackInvoke
public override DynamicMetaObject FallbackInvoke(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion)
{
try
{
return new DynamicMetaObject(
YacqExpression.List(this._symbols,
args.SelectAll(o => o.Expression.Reduce(this._symbols).TryConvert(target.RuntimeType))
.StartWith(target.Expression.Reduce(this._symbols).TryConvert(target.RuntimeType))
).Reduce(this._symbols).TryConvert(typeof(Object)),
target.Restrictions
);
}
catch (Exception ex)
{
return errorSuggestion
?? new DynamicMetaObject(
Expression.Throw(Expression.Constant(ex), typeof(Object)),
BindingRestrictions.Empty
);
}
}