本文整理汇总了C#中SyntaxGenerator.TryCastExpression方法的典型用法代码示例。如果您正苦于以下问题:C# SyntaxGenerator.TryCastExpression方法的具体用法?C# SyntaxGenerator.TryCastExpression怎么用?C# SyntaxGenerator.TryCastExpression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SyntaxGenerator
的用法示例。
在下文中一共展示了SyntaxGenerator.TryCastExpression方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateCloseProxyMethod
private SyntaxNode CreateCloseProxyMethod(Compilation compilation, SyntaxGenerator g, GenerationNameTable nameTable, bool asAsync)
{
return
g.MethodDeclaration(
asAsync ? nameTable[MemberNames.CloseProxyAsyncMethod] : nameTable[MemberNames.CloseProxyMethod],
returnType: asAsync ? g.TypeExpression(compilation.RequireType<Task>()) : null,
parameters: new SyntaxNode[] { g.ParameterDeclaration("alwaysAbort", g.TypeExpression(SpecialType.System_Boolean)) },
modifiers: asAsync ? DeclarationModifiers.Async : DeclarationModifiers.None,
accessibility: Accessibility.Private,
statements: new SyntaxNode[]
{
g.IfStatement(
g.ReferenceNotEqualsExpression(
g.IdentifierName(nameTable[MemberNames.CachedProxyField]),
g.NullLiteralExpression()
),
new SyntaxNode[]
{
g.LocalDeclarationStatement(
"proxy",
g.TryCastExpression(
g.MemberAccessExpression(
g.ThisExpression(),
nameTable[MemberNames.CachedProxyField]
),
compilation.RequireTypeByMetadataName("System.ServiceModel.ICommunicationObject")
)
),
g.TryFinallyStatement(
new SyntaxNode[]
{
AwaitExpressionIfAsync(g, asAsync,
g.InvocationExpression(
g.IdentifierName(asAsync ? nameTable[MemberNames.CloseProxyAsyncMethod] : nameTable[MemberNames.CloseProxyMethod]),
g.IdentifierName("proxy"),
g.IdentifierName("alwaysAbort")
)
)
},
new SyntaxNode[]
{
g.AssignmentStatement(
g.MemberAccessExpression(
g.ThisExpression(),
nameTable[MemberNames.CachedProxyField]
),
g.NullLiteralExpression()
)
}
)
}
)
}
);
}