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


C# SyntaxGenerator.FalseLiteralExpression方法代码示例

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


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

示例1: CreateDisposeMethods

      private IEnumerable<SyntaxNode> CreateDisposeMethods(Compilation compilation, SyntaxGenerator g, GenerationNameTable nameTable, bool suppressWarningComments)
      {
         yield return g.AddWarningCommentIf(!suppressWarningComments,
         g.MethodDeclaration(
            "Dispose",
            accessibility: Accessibility.Public,
            statements: new SyntaxNode[]
            {
               g.InvocationExpression(
                  g.MemberAccessExpression(
                     g.ThisExpression(),
                     "Dispose"
                  ),
                  g.TrueLiteralExpression()
               ),
               g.InvocationExpression(
                  g.MemberAccessExpression(
                     g.TypeExpression(compilation.RequireTypeByMetadataName("System.GC")),
                     "SuppressFinalize"
                  ),
                  g.ThisExpression()
               )
            }
         ))
         .PrependLeadingTrivia(g.CreateRegionTrivia("IDisposable"));


         yield return g.AddWarningCommentIf(!suppressWarningComments, g.MethodDeclaration(
            "Dispose",
            parameters: new SyntaxNode[] { g.ParameterDeclaration("disposing", g.TypeExpression(SpecialType.System_Boolean)) },
            accessibility: Accessibility.Private,
            statements: new SyntaxNode[]
            {
               g.IfStatement(
                  g.ValueEqualsExpression(
                     g.IdentifierName("disposing"),
                     g.TrueLiteralExpression()
                  ),
                  new SyntaxNode[]
                  {
                     g.TryCatchStatement(
                        new SyntaxNode[]
                        {
                           g.ExpressionStatement(
                              g.InvocationExpression(
                                 g.MemberAccessExpression(
                                    g.ThisExpression(),
                                    nameTable[MemberNames.CloseProxyMethod]
                                 ),
                                 g.FalseLiteralExpression()
                              )
                           )
                        },
                        new SyntaxNode[]
                        {
                           g.CatchClause(new SyntaxNode [0])
                        }
                     )
                  }
               )
            }
         )).AddTrailingTrivia(g.CreateEndRegionTrivia());
      }
开发者ID:modulexcite,项目名称:WcfClientProxyGenerator,代码行数:63,代码来源:ClientProxyGenerator.ClientClass.cs

示例2: CreateEnsureProxyMethod

      private SyntaxNode CreateEnsureProxyMethod(Compilation compilation, SyntaxGenerator g, GenerationNameTable nameTable, bool asAsync)
      {
         /*
            private async System.Threading.Tasks.Task EnsureProxyAsync()
            {
               if (m_cachedProxy != null && (
                   ((System.ServiceModel.ICommunicationObject)m_cachedProxy).State == System.ServiceModel.CommunicationState.Faulted ||
                   ((System.ServiceModel.ICommunicationObject)m_cachedProxy).State == System.ServiceModel.CommunicationState.Closed))
               {
                  await CloseProxyAsync().ConfigureAwait(false);
               }

               if (m_cachedProxy == null)
               {
                  var proxy = m_proxyFactory();
                  await System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)proxy).BeginOpen, ((System.ServiceModel.ICommunicationObject)proxy).EndOpen, null).ConfigureAwait(false);
                  m_cachedProxy = proxy;
               }
            }
         */
         return
            g.MethodDeclaration(
               asAsync ? nameTable[MemberNames.EnsureProxyAsyncMethod] : nameTable[MemberNames.EnsureProxyMethod],
               returnType: asAsync ? g.TypeExpression(compilation.RequireType<Task>()) : null,
               accessibility: Accessibility.Private,
               modifiers: asAsync ? DeclarationModifiers.Async : DeclarationModifiers.None,
               statements: new SyntaxNode[]
               {
                  //if (m_cachedProxy != null && (
                  //             ((System.ServiceModel.ICommunicationObject)m_cachedProxy).State == System.ServiceModel.CommunicationState.Faulted ||
                  //             ((System.ServiceModel.ICommunicationObject)m_cachedProxy).State == System.ServiceModel.CommunicationState.Closed))
                  g.IfStatement(
                     g.LogicalAndExpression(
                        // m_cachedProxy != null
                        g.ReferenceNotEqualsExpression(
                           g.MemberAccessExpression(
                              g.ThisExpression(),
                              nameTable[MemberNames.CachedProxyField]
                           ),
                           g.NullLiteralExpression()
                        ),
                        g.LogicalOrExpression(
                           // ((System.ServiceModel.ICommunicationObject)m_cachedProxy).State == System.ServiceModel.CommunicationState.Faulted
                           g.ValueEqualsExpression(
                              g.MemberAccessExpression(
                                 g.CastExpression(
                                    compilation.RequireTypeByMetadataName("System.ServiceModel.ICommunicationObject"),
                                    g.MemberAccessExpression(
                                       g.ThisExpression(),
                                       nameTable[MemberNames.CachedProxyField]
                                    )
                                 ),
                                 "State"
                              ),
                              g.DottedName("System.ServiceModel.CommunicationState.Faulted")
                           ),
                           // ((System.ServiceModel.ICommunicationObject)m_cachedProxy).State == System.ServiceModel.CommunicationState.Faulted
                           g.ValueEqualsExpression(
                              g.MemberAccessExpression(
                                 g.CastExpression(
                                    compilation.RequireTypeByMetadataName("System.ServiceModel.ICommunicationObject"),
                                    g.MemberAccessExpression(
                                       g.ThisExpression(),
                                       nameTable[MemberNames.CachedProxyField]
                                    )
                                 ),
                                 "State"
                              ),
                              g.DottedName("System.ServiceModel.CommunicationState.Closed")
                           )
                        )
                     ),
                     new SyntaxNode[]
                     {
                        // await CloseProxyAsync(false).ConfigureAwait(false);
                        // or
                        // CloseProxy(false);
                        AwaitExpressionIfAsync(g, asAsync,
                           g.InvocationExpression(
                              g.MemberAccessExpression(
                                 g.ThisExpression(),
                                 asAsync ? nameTable[MemberNames.CloseProxyAsyncMethod] : nameTable[MemberNames.CloseProxyMethod]
                              ),
                              g.FalseLiteralExpression()
                           )
                        )
                     }
                  ),
                  g.IfStatement(
                     g.ReferenceEqualsExpression(
                        g.MemberAccessExpression(
                           g.ThisExpression(),
                           nameTable[MemberNames.CachedProxyField]
                        ),
                        g.NullLiteralExpression()
                     ),
                     new SyntaxNode[]
                     {
                        g.LocalDeclarationStatement(
                           "proxy",
//.........这里部分代码省略.........
开发者ID:modulexcite,项目名称:WcfClientProxyGenerator,代码行数:101,代码来源:ClientProxyGenerator.ClientClass.cs

示例3: GenerateClientClass


//.........这里部分代码省略.........

               targetCtor = gen.AddWarningCommentIf(!suppressWarningComments, targetCtor);
               targetCtor = gen.WithAccessibility(targetCtor, ToAccessibility(constructorAccessibility));
               
               if (ctorEntry.IsLast)
               {
                  targetCtor = targetCtor.AddTrailingTrivia(gen.CreateEndRegionTrivia()).AddNewLineTrivia();
               }

               targetClass = gen.AddMembers(targetClass, targetCtor.AddNewLineTrivia());
            }


         }

         #endregion

         #region Operation Contract Methods

         // ==> catch
         // ==> {
         // ==>    this.CloseProxy(false);
         // ==>    throw;
         // ==> }
         var catchAndCloseProxyStatement = gen.CatchClause(new SyntaxNode[]
            {
               // ==> this.CloseProxy(false);
               gen.ExpressionStatement(
                  gen.InvocationExpression(
                     gen.MemberAccessExpression(
                        gen.ThisExpression(),
                        nameTable[MemberNames.CloseProxyMethod]
                     ),
                     gen.FalseLiteralExpression()
                  )
               ),

               // throw;
               gen.ThrowStatement()
            });


         foreach (var sourceMethodEntry in methods.AsSmartEnumerable())
         {
            var sourceMethod = sourceMethodEntry.Value;

            using (nameTable.PushScope(sourceMethod.Parameters.Select(p => p.Name)))
            {
               bool isAsync = ReturnsTask(semanticModel.Compilation, sourceMethod);
               bool isVoid = sourceMethod.ReturnType.SpecialType == SpecialType.System_Void || sourceMethod.ReturnType.Equals(semanticModel.Compilation.RequireType<Task>());

               SyntaxNode targetMethod = gen.MethodDeclaration(sourceMethod);

               if (sourceMethodEntry.IsFirst)
                  targetMethod = targetMethod.PrependLeadingTrivia(gen.CreateRegionTrivia("Contract Methods")).AddLeadingTrivia(gen.NewLine());

               targetMethod = gen.AddWarningCommentIf(!suppressWarningComments, targetMethod);

               targetMethod = gen.WithModifiers(targetMethod, isAsync ? DeclarationModifiers.Async : DeclarationModifiers.None);


               targetMethod = gen.WithStatements(targetMethod, new SyntaxNode[]
                  {
                  // ==> try {
                  gen.TryCatchStatement(new SyntaxNode[]
                     {
开发者ID:modulexcite,项目名称:WcfClientProxyGenerator,代码行数:67,代码来源:ClientProxyGenerator.ClientClass.cs

示例4: CreateCancellableProxyInvocationStatement

 private SyntaxNode CreateCancellableProxyInvocationStatement(Compilation compilation, SyntaxGenerator g, GenerationNameTable nameTable, IMethodSymbol sourceMethod)
 {
    //using (cancellationToken.Register(s => CloseProxy((System.ServiceModel.ICommunicationObject)s, true), proxy, false))
    string stateVariableName = GetUniqueParameterName("s", sourceMethod);
    return g.UsingStatement(
       g.InvocationExpression(
          g.MemberAccessExpression(
             g.IdentifierName(nameTable[MemberNames.CancellationTokenParameter]),
                "Register"
          ),
          g.ValueReturningLambdaExpression(
             stateVariableName,
             g.InvocationExpression(
                g.IdentifierName(nameTable[MemberNames.CloseProxyMethod]),
                g.CastExpression(
                   compilation.RequireTypeByMetadataName("System.ServiceModel.ICommunicationObject"),
                   g.IdentifierName(stateVariableName)
                ),
                g.TrueLiteralExpression()
             )
          ),
          g.IdentifierName(nameTable[MemberNames.ProxyVariable]),
          g.FalseLiteralExpression()
       ),
       new SyntaxNode[]
       {
          CreateProxyInvocationStatement(compilation, g, nameTable, sourceMethod)
       }
    );
 }
开发者ID:modulexcite,项目名称:WcfClientProxyGenerator,代码行数:30,代码来源:ClientProxyGenerator.ClientClass.cs

示例5: CreateProxyVaraibleDeclaration

 private SyntaxNode CreateProxyVaraibleDeclaration(SyntaxGenerator g, GenerationNameTable nameTable, bool isAsync)
 {
    // var proxy = this.GetProxy();
    if (!isAsync)
    {
       return g.LocalDeclarationStatement(nameTable[MemberNames.ProxyVariable],
                                        g.InvocationExpression(
                                           g.MemberAccessExpression(
                                              g.ThisExpression(),
                                              g.IdentifierName(nameTable[MemberNames.GetProxyMethod])
                                           )
                                        )
                                     );
    }
    else
    {
       // var proxy = await this.GetProxyAsync().ConfigureAwait(false);                                                
       return
          g.LocalDeclarationStatement(nameTable[MemberNames.ProxyVariable],
             g.AwaitExpression(
                g.InvocationExpression(
                   g.MemberAccessExpression(
                      g.InvocationExpression(
                         g.MemberAccessExpression(
                            g.ThisExpression(),
                            g.IdentifierName(nameTable[MemberNames.GetProxyAsyncMethod])
                         )
                      ), "ConfigureAwait"),
                   g.FalseLiteralExpression()
                )
             )
          );
    }
 }
开发者ID:modulexcite,项目名称:WcfClientProxyGenerator,代码行数:34,代码来源:ClientProxyGenerator.ClientClass.cs

示例6: CreateProxyInvocationStatement

      private SyntaxNode CreateProxyInvocationStatement(Compilation compilation, SyntaxGenerator g, GenerationNameTable nameTable, IMethodSymbol sourceMethod)
      {
         bool isAsync = ReturnsTask(compilation, sourceMethod);
         bool isVoid = IsVoid(compilation, sourceMethod);

         // proxy.Method(arg1, arg2, ...);
         SyntaxNode invocation = g.InvocationExpression(
                                    g.MemberAccessExpression(
                                       g.IdentifierName(nameTable[MemberNames.ProxyVariable]),
                                       sourceMethod.Name
                                    ),
                                    sourceMethod.Parameters.Select(p => g.IdentifierName(p.Name))
                                 );

         if (isAsync)
         {
            // await proxy.Method(arg1, arg2, ...).ConfigureAwait(false);
            invocation =
               g.AwaitExpression(
                  g.InvocationExpression(
                     g.MemberAccessExpression(
                        invocation,
                        "ConfigureAwait"
                     ),
                     g.FalseLiteralExpression()
                  )
               );
         }

         if (isVoid)
         {
            invocation = g.ExpressionStatement(invocation);
         }
         else
         {
            invocation = g.ReturnStatement(invocation);
         }

         return invocation;

      }
开发者ID:modulexcite,项目名称:WcfClientProxyGenerator,代码行数:41,代码来源:ClientProxyGenerator.ClientClass.cs


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