ICSharpCode.NRefactory.Ast.TypeDeclaration.AcceptVisitor C# (CSharp) Метод

AcceptVisitor() публичный Метод

public AcceptVisitor ( AstComparisonVisitor visitor, object data ) : bool
visitor AgentRalph.Visitors.AstComparisonVisitor
data object
Результат bool
        public override bool AcceptVisitor(AstComparisonVisitor visitor, object data)
        {
            return visitor.VisitTypeDeclaration(this, data);
        }

Same methods

TypeDeclaration::AcceptVisitor ( IAstVisitor visitor, object data ) : object

Usage Example

		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;
		}