本文整理汇总了C#中ICSharpCode.NRefactory.Ast.InvocationExpression类的典型用法代码示例。如果您正苦于以下问题:C# InvocationExpression类的具体用法?C# InvocationExpression怎么用?C# InvocationExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
InvocationExpression类属于ICSharpCode.NRefactory.Ast命名空间,在下文中一共展示了InvocationExpression类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: VisitInvocationExpression
public override object VisitInvocationExpression(InvocationExpression invocationExpression, object data)
{
var memberReferenceExpression = invocationExpression.TargetObject as MemberReferenceExpression;
if (memberReferenceExpression == null)
return base.VisitInvocationExpression(invocationExpression, data);
LambdaExpression lambdaExpression;
switch (memberReferenceExpression.MemberName)
{
case "Select":
if (invocationExpression.Arguments.Count != 1)
return base.VisitInvocationExpression(invocationExpression, data);
lambdaExpression = invocationExpression.Arguments[0] as LambdaExpression;
break;
case "SelectMany":
if (invocationExpression.Arguments.Count != 2)
return base.VisitInvocationExpression(invocationExpression, data);
lambdaExpression = invocationExpression.Arguments[1] as LambdaExpression;
break;
default:
return base.VisitInvocationExpression(invocationExpression, data);
}
if (lambdaExpression == null)
return base.VisitInvocationExpression(invocationExpression, data);
ProcessQuery(lambdaExpression.ExpressionBody);
return base.VisitInvocationExpression(invocationExpression, data);
}
开发者ID:andrewdavey,项目名称:ravendb,代码行数:31,代码来源:CaptureSelectNewFieldNamesVisitor.cs
示例2: TrackedVisitInvocationExpression
public override object TrackedVisitInvocationExpression(InvocationExpression invocationExpression, object data)
{
if (invocationExpression.TargetObject is FieldReferenceExpression)
{
FieldReferenceExpression targetObject = (FieldReferenceExpression) invocationExpression.TargetObject;
string methodName = targetObject.FieldName;
TypeDeclaration typeDeclaration = GetEnclosingTypeDeclaration(invocationExpression);
TypeDeclaration thisTypeDeclaration = (TypeDeclaration) AstUtil.GetParentOfType(invocationExpression, typeof(TypeDeclaration));
if (typeDeclaration != null && IsTestFixture(thisTypeDeclaration))
{
IList methods = AstUtil.GetChildrenWithType(typeDeclaration, typeof(MethodDeclaration));
IList specialMethods = GetMethods(methods, methodName);
if (ContainsInternalMethod(specialMethods))
{
Expression replacedExpression;
MethodDeclaration method = (MethodDeclaration) specialMethods[0];
bool staticMethod = AstUtil.ContainsModifier(method, Modifiers.Static);
replacedExpression = CreateReflectionInvocation(invocationExpression, staticMethod);
if (invocationExpression.Parent is Expression || invocationExpression.Parent is VariableDeclaration)
{
TypeReference returnType = GetInternalMethodReturnType(specialMethods);
CastExpression castExpression = new CastExpression(returnType, replacedExpression, CastType.Cast);
replacedExpression = castExpression;
}
ReplaceCurrentNode(replacedExpression);
}
}
}
return base.TrackedVisitInvocationExpression(invocationExpression, data);
}
开发者ID:sourcewarehouse,项目名称:janett,代码行数:30,代码来源:InternalMethodInvocationTransformer.cs
示例3: add_Invocation
//, AstExpression expression)
public static InvocationExpression add_Invocation(this BlockStatement blockStatement, string typeName, string methodName, params object[] parameters)
{
if (methodName.valid().isFalse())
return null;
Expression memberExpression = null;
if (typeName.valid())
memberExpression = new MemberReferenceExpression(new IdentifierExpression(typeName), methodName);
else
memberExpression = new IdentifierExpression(methodName);
var memberReference = new InvocationExpression(memberExpression);
if (parameters != null)
{
var arguments = new List<Expression>();
foreach (var parameter in parameters)
if (parameter is Expression)
arguments.add(parameter as Expression);
else
arguments.add(new PrimitiveExpression(parameter, parameter.str()));
memberReference.Arguments = arguments;
}
blockStatement.append(memberReference.expressionStatement());
return memberReference;
}
开发者ID:SergeTruth,项目名称:OxyChart,代码行数:29,代码来源:InvocationExpression_ExtensionMethods.cs
示例4: GenerateCode
public override void GenerateCode(List<AbstractNode> nodes, IList items)
{
TypeReference stringReference = new TypeReference("System.String");
MethodDeclaration method = new MethodDeclaration("ToString",
Modifiers.Public | Modifiers.Override,
stringReference,
null, null);
method.Body = new BlockStatement();
Expression target = new FieldReferenceExpression(new TypeReferenceExpression(stringReference),
"Format");
InvocationExpression methodCall = new InvocationExpression(target);
StringBuilder formatString = new StringBuilder();
formatString.Append('[');
formatString.Append(currentClass.Name);
for (int i = 0; i < items.Count; i++) {
formatString.Append(' ');
formatString.Append(codeGen.GetPropertyName(((FieldWrapper)items[i]).Field.Name));
formatString.Append("={");
formatString.Append(i);
formatString.Append('}');
}
formatString.Append(']');
methodCall.Arguments.Add(new PrimitiveExpression(formatString.ToString(), formatString.ToString()));
foreach (FieldWrapper w in items) {
methodCall.Arguments.Add(new FieldReferenceExpression(new ThisReferenceExpression(), w.Field.Name));
}
method.Body.AddChild(new ReturnStatement(methodCall));
nodes.Add(method);
}
开发者ID:xuchuansheng,项目名称:GenXSource,代码行数:29,代码来源:ToStringCodeGenerator.cs
示例5: TrackedVisitInvocationExpression
public override object TrackedVisitInvocationExpression(InvocationExpression invocationExpression, object data)
{
if (invocationExpression.TargetObject is FieldReferenceExpression)
{
FieldReferenceExpression targetObject = (FieldReferenceExpression) invocationExpression.TargetObject;
if (targetObject.FieldName == "toArray" || targetObject.FieldName == "ToArray")
{
Expression invoker = targetObject.TargetObject;
TypeReference invokerType = GetExpressionType(invoker);
if (invokerType != null && collectionTypes.Contains(invokerType.Type))
{
if (invocationExpression.Arguments.Count == 1)
{
Expression argExpression = (Expression) invocationExpression.Arguments[0];
if (argExpression is ArrayCreateExpression)
{
InvocationExpression newInvocation = invocationExpression;
TypeReference old = ((ArrayCreateExpression) argExpression).CreateType;
TypeReference tr = new TypeReference(old.Type);
TypeOfExpression tof = new TypeOfExpression(tr);
tr.Parent = tof;
tof.Parent = newInvocation;
newInvocation.Arguments.Clear();
newInvocation.Arguments.Add(tof);
ReplaceCurrentNode(newInvocation);
}
}
}
}
}
return base.TrackedVisitInvocationExpression(invocationExpression, data);
}
开发者ID:sourcewarehouse,项目名称:janett,代码行数:34,代码来源:ToArrayTransformer.cs
示例6: ModifyLambdaForSelectMany
private static INode ModifyLambdaForSelectMany(LambdaExpression lambdaExpression,
ParenthesizedExpression parenthesizedlambdaExpression,
InvocationExpression invocationExpression)
{
INode node = lambdaExpression;
var argPos = invocationExpression.Arguments.IndexOf(lambdaExpression);
switch (argPos)
{
case 0: // first one, select the collection
// need to enter a cast for (IEnumerable<dynamic>) on the end of the lambda body
var selectManyExpression = new LambdaExpression
{
ExpressionBody =
new CastExpression(new TypeReference("IEnumerable<dynamic>"),
new ParenthesizedExpression(lambdaExpression.ExpressionBody), CastType.Cast),
Parameters = lambdaExpression.Parameters,
};
node = new CastExpression(new TypeReference("Func<dynamic, IEnumerable<dynamic>>"),
new ParenthesizedExpression(selectManyExpression), CastType.Cast);
break;
case 1: // the transformation func
node = new CastExpression(new TypeReference("Func<dynamic, dynamic, dynamic>"), parenthesizedlambdaExpression,
CastType.Cast);
break;
}
return node;
}
开发者ID:NuvemNine,项目名称:ravendb,代码行数:27,代码来源:TransformDynamicLambdaExpressions.cs
示例7: TrackedVisitInvocationExpression
public override object TrackedVisitInvocationExpression(InvocationExpression invocationExpression, object data)
{
Expression invocationTarget = invocationExpression.TargetObject;
if (invocationTarget is FieldReferenceExpression)
{
FieldReferenceExpression methodTargetObject = (FieldReferenceExpression) invocationTarget;
Expression invoker = methodTargetObject.TargetObject;
TypeReference invokerType = GetExpressionType(invoker);
if (invokerType != null)
{
ReplaceMember(invocationExpression, data, invokerType);
}
}
else if (invocationTarget is IdentifierExpression)
{
TypeDeclaration typeDeclaration = (TypeDeclaration) AstUtil.GetParentOfType(invocationExpression, typeof(TypeDeclaration));
VerifyDerivedMethod(typeDeclaration, invocationExpression, data);
}
if (invocationExpression.TypeArguments.Count == 0)
return base.TrackedVisitInvocationExpression(invocationExpression, data);
else
{
invocationExpression.TypeArguments.Clear();
return null;
}
}
开发者ID:sourcewarehouse,项目名称:janett,代码行数:30,代码来源:MemberMapper.cs
示例8: TrackedVisitConstructorDeclaration
public override object TrackedVisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, object data)
{
const string initializerBlock = "InitializerBlock";
if (constructorDeclaration.Name == initializerBlock)
{
TypeDeclaration type = (TypeDeclaration) constructorDeclaration.Parent;
string initName = "Init" + type.Name;
MethodDeclaration initMethod = GetInitMethod(type);
initMethod.Body.Children.AddRange(constructorDeclaration.Body.Children);
Expression initInvocation = new InvocationExpression(new IdentifierExpression(initName));
ExpressionStatement initInvocationStatement = new ExpressionStatement(initInvocation);
IList constructors = AstUtil.GetChildrenWithType(type, typeof(ConstructorDeclaration));
if (constructors.Count > 1)
{
foreach (ConstructorDeclaration constructor in constructors)
{
if (constructor.Name != initializerBlock && !HasInitInvocation(constructor))
constructor.Body.Children.Insert(0, initInvocationStatement);
}
}
else if (((ConstructorDeclaration) constructors[0]).Name == initializerBlock)
{
ConstructorDeclaration constructor = new ConstructorDeclaration(type.Name, Modifiers.Public, null, null);
constructor.Body = new BlockStatement();
constructor.Body.AddChild(initInvocationStatement);
type.AddChild(constructor);
}
RemoveCurrentNode();
}
return base.TrackedVisitConstructorDeclaration(constructorDeclaration, data);
}
开发者ID:sourcewarehouse,项目名称:janett,代码行数:32,代码来源:InitializerBlockTransformer.cs
示例9: CheckGenericInvoke
void CheckGenericInvoke(InvocationExpression expr)
{
Assert.AreEqual(1, expr.Arguments.Count);
Assert.IsTrue(expr.TargetObject is IdentifierExpression);
Assert.AreEqual("myMethod", ((IdentifierExpression)expr.TargetObject).Identifier);
Assert.AreEqual(1, expr.TypeArguments.Count);
Assert.AreEqual("System.Char", expr.TypeArguments[0].SystemType);
}
开发者ID:xuchuansheng,项目名称:GenXSource,代码行数:8,代码来源:InvocationExpressionTests.cs
示例10: VisitInvocationExpression
public override object VisitInvocationExpression(InvocationExpression invocation, object data)
{
if (GetPrecedence(invocation.TargetObject) >= GetPrecedence(invocation)) {
invocation.TargetObject = Deparenthesize(invocation.TargetObject);
}
for(int i = 0; i < invocation.Arguments.Count; i++) {
invocation.Arguments[i] = Deparenthesize(invocation.Arguments[i]);
}
return base.VisitInvocationExpression(invocation, data);
}
开发者ID:almazik,项目名称:ILSpy,代码行数:10,代码来源:RemoveParenthesis.cs
示例11: TrackedVisitInvocationExpression
public override object TrackedVisitInvocationExpression(InvocationExpression invocationExpression, object data)
{
if (invocationExpression.TargetObject is IdentifierExpression)
{
IdentifierExpression identifierExpression = (IdentifierExpression) invocationExpression.TargetObject;
if (Methods.Contains(identifierExpression.Identifier) && data is IList)
((IList) data).Add(invocationExpression);
}
return base.TrackedVisitInvocationExpression(invocationExpression, data);
}
开发者ID:sourcewarehouse,项目名称:janett,代码行数:10,代码来源:MemberExcludeTransformer.cs
示例12: IdentifierOnlyInvocation
public void IdentifierOnlyInvocation()
{
// InitializeComponents();
IdentifierExpression identifier = new IdentifierExpression("InitializeComponents");
InvocationExpression invocation = new InvocationExpression(identifier, new List<Expression>());
object output = invocation.AcceptVisitor(new CodeDomVisitor(), null);
Assert.IsTrue(output is CodeMethodInvokeExpression);
CodeMethodInvokeExpression mie = (CodeMethodInvokeExpression)output;
Assert.AreEqual("InitializeComponents", mie.Method.MethodName);
Assert.IsTrue(mie.Method.TargetObject is CodeThisReferenceExpression);
}
开发者ID:Altaxo,项目名称:Altaxo,代码行数:11,代码来源:InvocationExpressionTest.cs
示例13: MethodOnThisReferenceInvocation
public void MethodOnThisReferenceInvocation()
{
// InitializeComponents();
MemberReferenceExpression field = new MemberReferenceExpression(new ThisReferenceExpression(), "InitializeComponents");
InvocationExpression invocation = new InvocationExpression(field, new List<Expression>());
object output = invocation.AcceptVisitor(new CodeDomVisitor(), null);
Assert.IsTrue(output is CodeMethodInvokeExpression);
CodeMethodInvokeExpression mie = (CodeMethodInvokeExpression)output;
Assert.AreEqual("InitializeComponents", mie.Method.MethodName);
Assert.IsTrue(mie.Method.TargetObject is CodeThisReferenceExpression);
}
开发者ID:Altaxo,项目名称:Altaxo,代码行数:11,代码来源:InvocationExpressionTest.cs
示例14: CheckGenericInvoke2
void CheckGenericInvoke2(InvocationExpression expr)
{
Assert.AreEqual(0, expr.Arguments.Count);
Assert.IsTrue(expr.TargetObject is IdentifierExpression);
IdentifierExpression ident = (IdentifierExpression)expr.TargetObject;
Assert.AreEqual("myMethod", ident.Identifier);
Assert.AreEqual(2, ident.TypeArguments.Count);
Assert.AreEqual("T", ident.TypeArguments[0].Type);
Assert.IsFalse(ident.TypeArguments[0].IsKeyword);
Assert.AreEqual("System.Boolean", ident.TypeArguments[1].Type);
Assert.IsTrue(ident.TypeArguments[1].IsKeyword);
}
开发者ID:Altaxo,项目名称:Altaxo,代码行数:12,代码来源:InvocationExpressionTests.cs
示例15: CreateGetClassMethodInvocation
private InvocationExpression CreateGetClassMethodInvocation(TypeOfExpression typeOfExpression)
{
FieldReferenceExpression argument = new FieldReferenceExpression(typeOfExpression, "AssemblyQualifiedName");
typeOfExpression.Parent = argument;
List<Expression> arguments = new List<Expression>();
arguments.Add(argument);
IdentifierExpression methodIdentifier = new IdentifierExpression("java.lang.Class");
FieldReferenceExpression methodReference = new FieldReferenceExpression(methodIdentifier, "forName");
InvocationExpression invocationExpression = new InvocationExpression(methodReference, arguments);
argument.Parent = invocationExpression;
methodReference.Parent = invocationExpression;
return invocationExpression;
}
开发者ID:sourcewarehouse,项目名称:janett,代码行数:13,代码来源:DotClassTransformer.cs
示例16: TrackedVisitInvocationExpression
public override object TrackedVisitInvocationExpression(InvocationExpression invocationExpression, object data)
{
if (invocationExpression.TargetObject is IdentifierExpression)
{
TypeDeclaration typeDeclaration = (TypeDeclaration) AstUtil.GetParentOfType(invocationExpression, typeof(TypeDeclaration));
IdentifierExpression methodIdentifier = (IdentifierExpression) invocationExpression.TargetObject;
if (typeDeclaration.Parent is TypeDeclaration)
{
List<ParameterDeclarationExpression> argList = new List<ParameterDeclarationExpression>();
int i = 0;
foreach (Expression argument in invocationExpression.Arguments)
{
TypeReference argumentType = GetExpressionType(argument);
if (argumentType != null)
{
string argType = argumentType.Type;
TypeReference typeReference = new TypeReference(argType);
ParameterDeclarationExpression parameterExpression = new ParameterDeclarationExpression(typeReference, "arg" + i);
parameterExpression.TypeReference.RankSpecifier = new int[0];
i++;
argList.Add(parameterExpression);
}
}
MethodDeclaration argMethod = new MethodDeclaration(methodIdentifier.Identifier, Modifiers.None, null, argList, null);
IList parentMethods = GetAccessibleMethods((TypeDeclaration) typeDeclaration.Parent);
if (Contains(parentMethods, argMethod))
{
int methodIndex = IndexOf(parentMethods, argMethod);
argMethod = (MethodDeclaration) parentMethods[methodIndex];
if (!AstUtil.ContainsModifier(argMethod, Modifiers.Static))
{
string parentTypeName = ((TypeDeclaration) typeDeclaration.Parent).Name;
AddInstanceField(typeDeclaration, parentTypeName);
AddProperConstructor(typeDeclaration, parentTypeName);
FieldReferenceExpression newReference = new FieldReferenceExpression(
new IdentifierExpression(parentTypeName),
((IdentifierExpression) invocationExpression.TargetObject).Identifier);
InvocationExpression newInvication = new InvocationExpression(newReference, invocationExpression.Arguments);
newInvication.Parent = invocationExpression.Parent;
ReplaceCurrentNode(newInvication);
}
}
}
}
return base.TrackedVisitInvocationExpression(invocationExpression, data);
}
开发者ID:sourcewarehouse,项目名称:janett,代码行数:51,代码来源:InnerClassTransformer.cs
示例17: InvocationOfStaticMethod
public void InvocationOfStaticMethod()
{
// System.Drawing.Color.FromArgb();
MemberReferenceExpression field = new MemberReferenceExpression(new IdentifierExpression("System"), "Drawing");
field = new MemberReferenceExpression(field, "Color");
field = new MemberReferenceExpression(field, "FromArgb");
InvocationExpression invocation = new InvocationExpression(field, new List<Expression>());
object output = invocation.AcceptVisitor(new CodeDomVisitor(), null);
Assert.IsTrue(output is CodeMethodInvokeExpression);
CodeMethodInvokeExpression mie = (CodeMethodInvokeExpression)output;
Assert.AreEqual("FromArgb", mie.Method.MethodName);
Assert.IsTrue(mie.Method.TargetObject is CodeTypeReferenceExpression);
Assert.AreEqual("System.Drawing.Color", (mie.Method.TargetObject as CodeTypeReferenceExpression).Type.BaseType);
}
开发者ID:Altaxo,项目名称:Altaxo,代码行数:14,代码来源:InvocationExpressionTest.cs
示例18: VisitInvocationExpression
public override object VisitInvocationExpression(InvocationExpression invocationExpression, object data)
{
var expression = invocationExpression.TargetObject as IdentifierExpression;
if(expression == null)
return base.VisitInvocationExpression(invocationExpression, data);
switch (expression.Identifier)
{
case "SpatialGenerate":
throw new InvalidOperationException("SpatialIndex.Generate or SpatialGenerate cannot be used from transform results");
case "CreateField":
throw new InvalidOperationException("CreateField cannot be used from transform results");
}
return base.VisitInvocationExpression(invocationExpression, data);
}
开发者ID:arelee,项目名称:ravendb,代码行数:15,代码来源:ThrowOnInvalidMethodCallsForTransformResults.cs
示例19: VisitNamedArgumentExpression
public override object VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, object data)
{
var expression = namedArgumentExpression.Expression as MemberReferenceExpression;
if (expression == null)
return base.VisitNamedArgumentExpression(namedArgumentExpression, data);
var identifierExpression = expression.TargetObject as IdentifierExpression;
if (identifierExpression == null || identifierExpression.Identifier != identifier)
return base.VisitNamedArgumentExpression(namedArgumentExpression, data);
var right = new InvocationExpression(new MemberReferenceExpression(namedArgumentExpression.Expression, "Unwrap"))
{
Parent = namedArgumentExpression.Expression.Parent
};
namedArgumentExpression.Expression.Parent = right;
namedArgumentExpression.Expression = right;
return base.VisitNamedArgumentExpression(namedArgumentExpression, data);
}
开发者ID:sirrocco,项目名称:rhino-divandb,代码行数:16,代码来源:TransformVisitor.cs
示例20: VisitInvocationExpression
public override object VisitInvocationExpression (InvocationExpression invocationExpression, object data)
{
string invocation = "";
if (!invocationExpression.StartLocation.IsEmpty && !invocationExpression.EndLocation.IsEmpty) {
invocation = this.data.Document.GetTextBetween (this.data.Document.LocationToOffset (invocationExpression.StartLocation.Line, invocationExpression.StartLocation.Column),
this.data.Document.LocationToOffset (invocationExpression.EndLocation.Line, invocationExpression.EndLocation.Column));
}
base.VisitInvocationExpression (invocationExpression, data);
MethodResolveResult mrr = resolver.Resolve (new ExpressionResult (invocation), new DomLocation (invocationExpression.StartLocation.Line, invocationExpression.StartLocation.Column)) as MethodResolveResult;
if (mrr != null && mrr.MostLikelyMethod != null && mrr.MostLikelyMethod is ExtensionMethod) {
IMethod originalMethod = ((ExtensionMethod)mrr.MostLikelyMethod).OriginalMethod;
possibleTypeReferences.Add (new TypeReference (originalMethod.DeclaringType.Name));
}
return null;
}
开发者ID:Tak,项目名称:monodevelop-novell,代码行数:16,代码来源:FindTypeReferencesVisitor.cs
注:本文中的ICSharpCode.NRefactory.Ast.InvocationExpression类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论