本文整理汇总了C#中MethodDeclaration.GetParent方法的典型用法代码示例。如果您正苦于以下问题:C# MethodDeclaration.GetParent方法的具体用法?C# MethodDeclaration.GetParent怎么用?C# MethodDeclaration.GetParent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MethodDeclaration
的用法示例。
在下文中一共展示了MethodDeclaration.GetParent方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: VisitMethodDeclaration
public override void VisitMethodDeclaration(MethodDeclaration methodDeclaration)
{
var typeDeclaration = methodDeclaration.GetParent<TypeDeclaration>();
var writer = this.m_TypeWriters[typeDeclaration];
var modifiers = this.GetJavaModifiersAsList(methodDeclaration.Modifiers);
var javaModifiers = this.ConvertModifierListToJavaModifiers(modifiers);
writer.WriteLine(".method " + javaModifiers + " " +
JavaSignature.CreateMethodSignature(methodDeclaration, this.m_Resolver.TypeResolveContext, false));
methodDeclaration.AcceptVisitor(new JavaMethodVisitor(this.m_Resolver, writer));
writer.WriteLine(".end method");
}
示例2: CreateMethodSignature
public static string CreateMethodSignature(MethodDeclaration method, ITypeResolveContext resolver, bool fullyQualified = true)
{
var builder = new StringBuilder();
if (fullyQualified)
{
builder.Append(CreateTypeSignature(method.GetParent<TypeDeclaration>()));
builder.Append("/");
}
builder.Append(method.Name);
builder.Append("(");
foreach (var parameter in method.Parameters)
{
builder.Append(CreateTypeSignature(parameter.Type.ToTypeReference().Resolve(resolver)));
}
builder.Append(")");
builder.Append(CreateTypeSignature(method.ReturnType.ToTypeReference().Resolve(resolver)));
return builder.ToString();
}
示例3: VisitMethodDeclaration
public override void VisitMethodDeclaration (MethodDeclaration methodDeclaration)
{
base.VisitMethodDeclaration (methodDeclaration);
//
// Try to force the method into a form we can handle
//
var m = methodDeclaration;
var gotos = m.Body.Descendants.OfType<GotoStatement> ().ToList ();
if (gotos.Count == 0)
return;
if (HasBadLabels (m)) {
foreach (var ts in transforms) {
m = (MethodDeclaration)methodDeclaration.Clone ();
m.AcceptVisitor (new LabelLoops ());
m.AcceptVisitor (new SwitchSectionBlocksToStatements ());
foreach (var t in ts) {
m.AcceptVisitor (t);
m.AcceptVisitor (new RemoveRedundantGotos ());
m.AcceptVisitor (new RemoveUnreachableStatements ());
}
m.AcceptVisitor (new RemoveLabelsWithoutGotos ());
if (!HasBadLabels (m)) {
break;
}
}
if (HasBadLabels (m)) {
App.Warning ("! GOTO labels at different levels in {0}.{1}(). This is not supported.",
methodDeclaration.GetParent<TypeDeclaration> ().Name,
methodDeclaration.Name);
return;
} else {
methodDeclaration.ReplaceWith (m);
}
}
//
// Handle it
//
m.AcceptVisitor (new CreateGotoLoop ());
m.AcceptVisitor (new RewriteGotos ());
}