本文整理汇总了C#中ICSharpCode.NRefactory.Ast.TypeDeclaration.AcceptVisitor方法的典型用法代码示例。如果您正苦于以下问题:C# TypeDeclaration.AcceptVisitor方法的具体用法?C# TypeDeclaration.AcceptVisitor怎么用?C# TypeDeclaration.AcceptVisitor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICSharpCode.NRefactory.Ast.TypeDeclaration
的用法示例。
在下文中一共展示了TypeDeclaration.AcceptVisitor方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateInterfaceForClass
public override string GenerateInterfaceForClass(string newInterfaceName, string existingCode, IList<IMember> membersToKeep, IClass sourceClass, bool preserveComments)
{
Modifiers modifiers = CodeGenerator.ConvertModifier(sourceClass.Modifiers, new ClassFinder(membersToKeep[0]));
// keep only visibility modifiers and 'unsafe' modifier
// -> remove abstract,sealed,static
modifiers &= Modifiers.Visibility | Modifiers.Unsafe;
TypeDeclaration interfaceDef = new TypeDeclaration(modifiers, new List<AttributeSection>());
interfaceDef.Name = newInterfaceName;
interfaceDef.Type = NR.Ast.ClassType.Interface;
interfaceDef.Templates = CodeGenerator.ConvertTemplates(sourceClass.TypeParameters, new ClassFinder(membersToKeep[0]));
foreach (IMember member in membersToKeep) {
AttributedNode an = CodeGenerator.ConvertMember(member, new ClassFinder(member));
INode node = null;
if (an is MethodDeclaration) {
MethodDeclaration m = an as MethodDeclaration;
m.Body = BlockStatement.Null;
m.Modifier = Modifiers.None;
node = m;
} else {
if (an is PropertyDeclaration) {
PropertyDeclaration p = an as PropertyDeclaration;
p.GetRegion.Block = BlockStatement.Null;
p.SetRegion.Block= BlockStatement.Null;
p.Modifier = Modifiers.None;
node = p;
} else {
if (an is EventDeclaration) {
EventDeclaration e = an as EventDeclaration;
e.Modifier = Modifiers.None;
node = e;
}
}
}
if (node == null)
throw new NotSupportedException();
interfaceDef.AddChild(node);
}
IOutputAstVisitor printer = this.GetOutputVisitor();
interfaceDef.AcceptVisitor(printer, null);
string codeForNewInterface = printer.Text;
// wrap the new code in the same comments/usings/namespace as the the original class file.
string newFileContent = CreateNewFileLikeExisting(existingCode, codeForNewInterface);
return newFileContent;
}