本文整理汇总了C#中System.Linq.Expressions.ExpressionVisitor.VisitAndConvert方法的典型用法代码示例。如果您正苦于以下问题:C# ExpressionVisitor.VisitAndConvert方法的具体用法?C# ExpressionVisitor.VisitAndConvert怎么用?C# ExpressionVisitor.VisitAndConvert使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Linq.Expressions.ExpressionVisitor
的用法示例。
在下文中一共展示了ExpressionVisitor.VisitAndConvert方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: VisitChildren
/// <summary>
/// 简化节点,然后对简化的表达式调用访问者委托。该方法在节点不可简化时引发异常。
/// </summary>
/// <returns>
/// 要访问的表达式,或应在树中替换此表达式的表达式。
/// </returns>
/// <param name="visitor"><see cref="T:System.Func`2"/> 的一个实例。</param>
protected override Expression VisitChildren(ExpressionVisitor visitor)
{
var newArguments = visitor.VisitAndConvert(_arguments, "VisitChildren");
return newArguments != _arguments
? new SqlFunctionExpression(FunctionName, newArguments, Type)
: this;
}
示例2: VisitChildren
protected override Expression VisitChildren(ExpressionVisitor visitor)
{
var arguments = visitor.VisitAndConvert(new ReadOnlyCollection<Expression>(_arguments), "VisitChildren");
return arguments != Arguments
? new SqlFunctionExpression(FunctionName, arguments, Type)
: this;
}
示例3: VisitChildren
protected override Expression VisitChildren(ExpressionVisitor visitor)
{
var newObject = visitor.Visit(MethodCall.Object);
var newArguments = visitor.VisitAndConvert(MethodCall.Arguments, "VisitChildren");
if (newObject != MethodCall.Object
|| newArguments != MethodCall.Arguments)
{
return new MethodCallEvaluationPreventingExpression(
Call(newObject, MethodCall.Method, newArguments));
}
return this;
}
示例4: VisitParameters
public static ParameterExpression[] VisitParameters(ExpressionVisitor visitor, IParameterProvider nodes, string callerName)
{
ParameterExpression[] newNodes = null;
for (int i = 0, n = nodes.ParameterCount; i < n; i++)
{
ParameterExpression curNode = nodes.GetParameter(i);
ParameterExpression node = visitor.VisitAndConvert(curNode, callerName);
if (newNodes != null)
{
newNodes[i] = node;
}
else if (!object.ReferenceEquals(node, curNode))
{
newNodes = new ParameterExpression[n];
for (int j = 0; j < i; j++)
{
newNodes[j] = nodes.GetParameter(j);
}
newNodes[i] = node;
}
}
return newNodes;
}