当前位置: 首页>>代码示例>>C#>>正文


C# ExpressionSyntax.ToString方法代码示例

本文整理汇总了C#中ExpressionSyntax.ToString方法的典型用法代码示例。如果您正苦于以下问题:C# ExpressionSyntax.ToString方法的具体用法?C# ExpressionSyntax.ToString怎么用?C# ExpressionSyntax.ToString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ExpressionSyntax的用法示例。


在下文中一共展示了ExpressionSyntax.ToString方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: IsResultDefinition

        public static bool IsResultDefinition(ExpressionSyntax expr)
        {
            var methodRule = new Regex("^Contract.Result<.*?>\\(\\)$");

              if (methodRule.IsMatch(expr.ToString()))
              {
            return true;
              }
              else if (expr is PrefixUnaryExpressionSyntax && expr.Kind == SyntaxKind.LogicalNotExpression)
              {
            return IsResultDefinition(((PrefixUnaryExpressionSyntax)expr).Operand);
              }
              if (expr is BinaryExpressionSyntax && expr.Kind == SyntaxKind.EqualsExpression)
              {
            var b = (BinaryExpressionSyntax)expr;

            if (b.Left is InvocationExpressionSyntax)
            {
              var ie = (InvocationExpressionSyntax)b.Left;

              var callRule = new Regex("^Contract.Result<.*?>");
              return callRule.IsMatch(ie.Expression.ToString().Trim());
            }
            else
            {
              return false;
            }
              }
              else
              {
            return false;
              }
        }
开发者ID:twschiller,项目名称:contract-classifier,代码行数:33,代码来源:CodeContractCollector.cs

示例2: IsValueTypeAssigningToDefault

 private static bool IsValueTypeAssigningToDefault(ITypeSymbol fieldType, ExpressionSyntax initializerValue, SemanticModel semanticModel)
 {
     switch (fieldType.SpecialType)
     {
         case SpecialType.System_Boolean:
             {
                 var literal = initializerValue as LiteralExpressionSyntax;
                 if (literal == null) return false;
                 var boolValue = (bool)literal.Token.Value;
                 if (boolValue) return false;
                 break;
             }
         case SpecialType.System_SByte:
         case SpecialType.System_Byte:
         case SpecialType.System_Int16:
         case SpecialType.System_UInt16:
         case SpecialType.System_Int32:
         case SpecialType.System_UInt32:
         case SpecialType.System_Int64:
         case SpecialType.System_UInt64:
         case SpecialType.System_Decimal:
         case SpecialType.System_Single:
         case SpecialType.System_Double:
             if (initializerValue.ToString() != "0")
             {
                 var literal = initializerValue as LiteralExpressionSyntax;
                 if (literal == null) return false;
                 var possibleZero = Convert.ToDouble(literal.Token.Value);
                 if (possibleZero != 0) return false;
             }
             break;
         case SpecialType.System_IntPtr:
             {
                 var memberAccess = initializerValue as MemberAccessExpressionSyntax;
                 if (memberAccess == null) return false;
                 var memberAccessFieldSymbol = semanticModel.GetSymbolInfo(memberAccess).Symbol as IFieldSymbol;
                 if (memberAccessFieldSymbol?.ToString() != "System.IntPtr.Zero") return false;
                 break;
             }
         case SpecialType.System_UIntPtr:
             {
                 var memberAccess = initializerValue as MemberAccessExpressionSyntax;
                 if (memberAccess == null) return false;
                 var memberAccessFieldSymbol = semanticModel.GetSymbolInfo(memberAccess).Symbol as IFieldSymbol;
                 if (memberAccessFieldSymbol?.ToString() != "System.UIntPtr.Zero") return false;
                 break;
             }
         case SpecialType.System_DateTime:
             {
                 var memberAccess = initializerValue as MemberAccessExpressionSyntax;
                 if (memberAccess == null) return false;
                 var memberAccessFieldSymbol = semanticModel.GetSymbolInfo(memberAccess).Symbol as IFieldSymbol;
                 if (memberAccessFieldSymbol?.ToString() != "System.DateTime.MinValue") return false;
                 break;
             }
         //case SpecialType.System_Enum: //does not work, enums come back as none. Bug on roslyn? See solution below.
         default:
             if (fieldType.TypeKind != TypeKind.Enum) return false;
             if (initializerValue.ToString() != "0")
             {
                 var literal = initializerValue as LiteralExpressionSyntax;
                 if (literal == null) return false;
                 var possibleZero = Convert.ToDouble(literal.Token.Value);
                 if (possibleZero != 0) return false;
             }
             break;
     }
     return true;
 }
开发者ID:haroldhues,项目名称:code-cracker,代码行数:69,代码来源:RedundantFieldAssignmentAnalyzer.cs

示例3: CheckFollowingExpressions

        private static void CheckFollowingExpressions(SyntaxNodeAnalysisContext context, int currentExpressionIndex,
            List<ExpressionSyntax> expressionsInChain,
            ExpressionSyntax expressionComparedToNull, BinaryExpressionSyntax comparisonToNull)
        {
            for (var j = currentExpressionIndex + 1; j < expressionsInChain.Count; j++)
            {
                var descendantNodes = expressionsInChain[j].DescendantNodes()
                    .Where(descendant =>
                        descendant.IsKind(expressionComparedToNull.Kind()) &&
                        EquivalenceChecker.AreEquivalent(expressionComparedToNull, descendant))
                        .Where(descendant =>
                    (descendant.Parent is MemberAccessExpressionSyntax &&
                        EquivalenceChecker.AreEquivalent(expressionComparedToNull,
                            ((MemberAccessExpressionSyntax) descendant.Parent).Expression)) ||
                    (descendant.Parent is ElementAccessExpressionSyntax &&
                        EquivalenceChecker.AreEquivalent(expressionComparedToNull,
                            ((ElementAccessExpressionSyntax) descendant.Parent).Expression)))
                    .ToList();

                if (descendantNodes.Any())
                {
                    context.ReportDiagnostic(Diagnostic.Create(Rule, comparisonToNull.GetLocation(),
                        expressionComparedToNull.ToString()));
                }
            }
        }
开发者ID:dbolkensteyn,项目名称:sonarlint-vs,代码行数:26,代码来源:ShortCircuitNullPointerDereference.cs

示例4: CheckWhetherMethodIsFromNamespace

            private bool CheckWhetherMethodIsFromNamespace(ExpressionSyntax node)
            {
                var isMatch = false;
                if (SemanticModel != null)
                {
                    var symbolInfo = SemanticModel.GetSymbolInfo(node);

                    string ns = symbolInfo.Symbol.ContainingNamespace.ToDisplayString();
                    if (ns == Namespace)
                    {
                        Results.AppendLine();
                        Results.Append("Line ");
                        Results.Append(SemanticModel.SyntaxTree.GetLineSpan(node.Span).StartLinePosition.Line);
                        Results.Append(": ");
                        Results.Append(node.ToString());
                        isMatch = true;
                    }
                }

                return isMatch;
            }
开发者ID:Rickinio,项目名称:roslyn,代码行数:21,代码来源:FAQ.cs

示例5: ReportDiagnostic

 private static void ReportDiagnostic(SyntaxNodeAnalysisContext context, VariableDeclaratorSyntax variable, ExpressionSyntax initializerValue)
 {
     var diag = Diagnostic.Create(Rule, variable.GetLocation(), variable.Identifier.ValueText, initializerValue.ToString());
     context.ReportDiagnostic(diag);
 }
开发者ID:haroldhues,项目名称:code-cracker,代码行数:5,代码来源:RedundantFieldAssignmentAnalyzer.cs

示例6: RewritePostfixUnarys

        protected ExpressionSyntax RewritePostfixUnarys(ExpressionSyntax node)
        {
            var expressions = node.DescendentNodesAndSelf().OfType<PostfixUnaryExpressionSyntax>().ToArray();
            if (expressions.Length == 0)
                return node;

            List<string> names = new List<string> (expressions.Length);
            foreach (var expr in expressions)
            {
                if (expr.Kind != SyntaxKind.PostIncrementExpression && expr.Kind != SyntaxKind.PostDecrementExpression)
                    continue; // These aren't the droids we're looking for.

                IdentifierNameSyntax name = FindIdentifierName (expr);
                if (name == null)
                    continue; // We didn't find a name

                if (names.Contains (name.PlainName))
                {
                    var newExpr = GetLogExpression (name.PlainName, expr);
                    node = node.ReplaceNode (expr, newExpr);
                }
                else
                    names.Add (name.PlainName);
            }

            // We'll use a string builder construct our expression.
            StringBuilder builder = new StringBuilder ("LogPostfixValues ((");
            builder.Append (node.ToString());
            builder.Append ("), ");

            bool found = false;
            foreach (string name in names)
            {
                if (found)
                    builder.Append (", ");

                // We need to specify our generic types so we match
                // the params argument type
                builder.Append ("new Tuple<string, object> (\"");
                builder.Append (name);
                builder.Append ("\", ");
                builder.Append (name);
                builder.Append (")");
                found = true;
            }

            if (!found)
                return node; // We didn't find any usable expressions

            builder.Append (")");

            // Parse and return our new expression.
            return Syntax.ParseExpression (builder.ToString());
        }
开发者ID:Mstrymt,项目名称:Instant,代码行数:54,代码来源:LoggingRewriter.cs

示例7: Expression

 public static string Expression(ExpressionSyntax expression)
 {
     return expression.ToString();
 }
开发者ID:UIKit0,项目名称:SharpSwift,代码行数:4,代码来源:ExpressionSyntaxParser.cs

示例8: AddWatchNode

		SyntaxNode AddWatchNode(StatementSyntax node, ExpressionSyntax expr)
		{
			var id = Guid.NewGuid().ToString();
			var c = node.GetTrailingTrivia().First(t => t.Kind() == SyntaxKind.SingleLineCommentTrivia && t.ToString().StartsWith("//="));
			var p = c.GetLocation().GetLineSpan().StartLinePosition;

			var wv = new WatchVariable {
				Id = id,
				Expression = expr.ToString(),
				ExplicitExpression = "",
				FilePath = path,
				FileLine = p.Line + 1,  // 0-based index
				FileColumn = p.Character + 1, // 0-based index
			};
			WatchVariables.Add(wv);

			var wi = GetWatchInstrument(id, expr);

			// creating a block and removing the open/close braces is a bit of a hack but
			// lets us replace one node with two... 
			return
				SyntaxFactory
					.Block(node, wi)
					.WithOpenBraceToken(SyntaxFactory.MissingToken(SyntaxKind.OpenBraceToken))
					.WithCloseBraceToken(SyntaxFactory.MissingToken(SyntaxKind.CloseBraceToken))
					.WithTrailingTrivia(SyntaxFactory.EndOfLine("\r\n"));
		}
开发者ID:praeclarum,项目名称:Continuous,代码行数:27,代码来源:ContinuousEnv.MonoDevelop.cs

示例9: assigmentStatement

        private static StatementSyntax assigmentStatement(ExpressionSyntax left, ExpressionSyntax right, Scope scope)
        {
            if (left is IdentifierNameSyntax)
            {
                var varName = left.ToString();
                if (scope.hasVariable(varName))
                    return assignment.Get<StatementSyntax>(left, right);
                else
                {
                    scope.addVariable(varName);
                    return declaration.Get<StatementSyntax>(varName, right);
                }
            }

            throw new NotImplementedException();
        }
开发者ID:mpmedia,项目名称:Excess,代码行数:16,代码来源:Extension.cs

示例10: ShouldReplaceStringLength

        /// <summary>
        /// Determines whether a binary expression with a string length expression is suitable for replacement.
        /// </summary>
        /// <param name="left">A node representing a string length expression.</param>
        /// <param name="right">A node to be tested.</param>
        /// <param name="operatorToken">The operator separating the nodes.</param>
        /// <returns></returns>
        static ShouldReplaceResult ShouldReplaceStringLength(MemberAccessExpressionSyntax left, ExpressionSyntax right, SyntaxToken operatorToken)
        {
            const string zeroLiteral = "0";
            const string oneLiteral = "1";

            var result = new ShouldReplaceResult();
            result.ShouldReplace = false;

            // str.Length == 0 or str.Length <= 0
            if (operatorToken.IsKind(SyntaxKind.EqualsEqualsToken, SyntaxKind.LessThanEqualsToken) && string.Equals(zeroLiteral, right.ToString()))
            {
                result.IsEmptyTest = true;
                result.ShouldReplace = true;
            }
            // str.Length < 1
            else if (operatorToken.IsKind(SyntaxKind.LessThanToken) && string.Equals(oneLiteral, right.ToString()))
            {
                result.IsEmptyTest = true;
                result.ShouldReplace = true;
            }
            // str.Length != 0 or str.Length > 0
            else if (operatorToken.IsKind(SyntaxKind.ExclamationEqualsToken, SyntaxKind.GreaterThanToken) && string.Equals(zeroLiteral, right.ToString()))
            {
                result.IsEmptyTest = true;
                result.IsNegative = true;
                result.ShouldReplace = true;
            }
            // str.Length >= 1
            else if (operatorToken.IsKind(SyntaxKind.GreaterThanEqualsToken) && string.Equals(oneLiteral, right.ToString()))
            {
                result.IsEmptyTest = true;
                result.IsNegative = true;
                result.ShouldReplace = true;
            }

            if (result.ShouldReplace)
            {
                result.IdentifierNode = left.Expression;
            }

            return result;

        }
开发者ID:alecor191,项目名称:RefactoringEssentials,代码行数:50,代码来源:ReplaceWithStringIsNullOrEmptyAnalyzer.cs

示例11: IsEmptySyntax

        /// <summary>
        /// Does the expression look like a test for empty string ("" or string.Empty)?
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        static bool IsEmptySyntax(SyntaxNodeAnalysisContext nodeContext, ExpressionSyntax node)
        {
            if (!IsStringType(nodeContext, node))
                return false;

            if (node.IsKind(SyntaxKind.StringLiteralExpression))
            {
                if (string.Equals("\"\"", node.ToString()))
                    return true;
            }
            else if (node.IsKind(SyntaxKind.SimpleMemberAccessExpression))
            {
                var sma = node as MemberAccessExpressionSyntax;

                if (!string.Equals("string", sma.Expression.ToString(), StringComparison.OrdinalIgnoreCase))
                    return false;

                if (!string.Equals("Empty", sma.Name.ToString(), StringComparison.OrdinalIgnoreCase))
                    return false;

                return true;
            }

            return false;
        }
开发者ID:alecor191,项目名称:RefactoringEssentials,代码行数:30,代码来源:ReplaceWithStringIsNullOrEmptyAnalyzer.cs

示例12: ConstantType

        public static TypeSyntax ConstantType(ExpressionSyntax value)
        {
            var valueStr = value.ToString();
            switch (value.CSharpKind())
            {
                case SyntaxKind.NumericLiteralExpression:
                {
                    int val;
                    double dval;
                    if (int.TryParse(valueStr, out val))
                        return Compiler.Int;
                    else if (double.TryParse(valueStr, out dval))
                        return Compiler.Double;

                    break;
                }

                case SyntaxKind.StringLiteralExpression:
                    return Compiler.String;

                case SyntaxKind.TrueLiteralExpression:
                case SyntaxKind.FalseLiteralExpression:
                    return Compiler.Boolean;
            }

            return SyntaxFactory.ParseTypeName(valueStr);
        }
开发者ID:mpmedia,项目名称:Excess,代码行数:27,代码来源:Compiler.cs

示例13: ConditionContainsNullCheck

        bool ConditionContainsNullCheck(ExpressionSyntax condition, ExpressionSyntax identifierToCheck)
        {
            var identifierNameToCheck = identifierToCheck as IdentifierNameSyntax;
            var memberAccessExpressionToCheck = identifierToCheck as MemberAccessExpressionSyntax;

            return condition.DescendantNodesAndSelf().Any(n =>
            {
                var binaryExpr = n as BinaryExpressionSyntax;
                if (binaryExpr != null)
                {

                    IdentifierNameSyntax identifierName = binaryExpr.Left as IdentifierNameSyntax;
                    if ((identifierName != null) && (identifierNameToCheck != null) && (identifierName.Identifier.ValueText == identifierNameToCheck.Identifier.ValueText))
                        return binaryExpr.IsKind(SyntaxKind.IsNotExpression) && binaryExpr.Right.IsKind(SyntaxKind.NothingLiteralExpression);
                    MemberAccessExpressionSyntax memberAccessExpressionSyntax = binaryExpr.Left as MemberAccessExpressionSyntax;
                    if ((memberAccessExpressionSyntax != null) && (memberAccessExpressionToCheck != null) && (memberAccessExpressionSyntax.ToString() == identifierToCheck.ToString()))
                        return binaryExpr.IsKind(SyntaxKind.IsNotExpression) && binaryExpr.Right.IsKind(SyntaxKind.NothingLiteralExpression);

                    identifierName = binaryExpr.Right as IdentifierNameSyntax;
                    if ((identifierName != null) && (identifierNameToCheck != null) && (identifierName.Identifier.ValueText == identifierNameToCheck.Identifier.ValueText))
                        return binaryExpr.IsKind(SyntaxKind.IsNotExpression) && binaryExpr.Left.IsKind(SyntaxKind.NothingLiteralExpression);
                    memberAccessExpressionSyntax = binaryExpr.Right as MemberAccessExpressionSyntax;
                    if ((memberAccessExpressionSyntax != null) && (memberAccessExpressionToCheck != null) && (memberAccessExpressionSyntax.ToString() == identifierToCheck.ToString()))
                        return binaryExpr.IsKind(SyntaxKind.IsNotExpression) && binaryExpr.Left.IsKind(SyntaxKind.NothingLiteralExpression);
                }

                return false;
            });
        }
开发者ID:alecor191,项目名称:RefactoringEssentials,代码行数:29,代码来源:AddCheckForNothingCodeRefactoringProvider.cs

示例14: CheckForBooleanConstant

        private static void CheckForBooleanConstant(BinaryExpressionSyntax binaryExpression, bool leftSide,
            ExpressionSyntax booleanContantExpression, bool needsLocationCalculation, SyntaxNodeAnalysisContext c)
        {
            var expression = leftSide
                ? binaryExpression.Left
                : binaryExpression.Right;

            if (EquivalenceChecker.AreEquivalent(expression, booleanContantExpression))
            {
                var location = needsLocationCalculation
                    ? CalculateLocation(binaryExpression, leftSide)
                    : expression.GetLocation();

                c.ReportDiagnostic(Diagnostic.Create(Rule, location,
                    booleanContantExpression.ToString()));
            }
        }
开发者ID:wayneYaw,项目名称:sonarlint-vs,代码行数:17,代码来源:BooleanLiteralUnnecessary.cs

示例15: ConvertScopedIdentifierName

        public static string ConvertScopedIdentifierName(ExpressionSyntax scope, string name)
        {
            if (scope == null)
                return ConvertIdentifierName(name);

            switch (name)
            {
                case "out":
                    if (scope.ToString()  == "System")
                        return "Console";
                    goto default;
                case "MAX_VALUE":
                case "MIN_VALUE":
                    switch (scope.ToString())
                    {
                        case "int":
                        case "long":
                            return Humanize(name);
                    }
                    goto default;
                default:
                    return ConvertIdentifierName(name);
            }
        }
开发者ID:hmemcpy,项目名称:ReSharper.ExJava,代码行数:24,代码来源:TypeHelper.cs


注:本文中的ExpressionSyntax.ToString方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。