當前位置: 首頁>>代碼示例>>C#>>正文


C# DynamicMetaObject.SelectAll方法代碼示例

本文整理匯總了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
                );
     }
 }
開發者ID:takeshik,項目名稱:yacq,代碼行數:31,代碼來源:YacqInvokeMemberBinder.cs

示例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
                );
     }
 }
開發者ID:takeshik,項目名稱:yacq,代碼行數:26,代碼來源:YacqSetIndexBinder.cs

示例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
                );
     }
 }
開發者ID:takeshik,項目名稱:yacq,代碼行數:21,代碼來源:YacqInvokeBinder.cs


注:本文中的System.Dynamic.DynamicMetaObject.SelectAll方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。