void CheckInitialization() { if (isInitialized) { return; } isInitialized = true; foreach (FieldDefinition fieldDefinition in typeDefinition.Fields) { if (!loadInternal && DomCecilCompilationUnit.IsInternal(DomCecilType.GetModifiers(fieldDefinition))) { continue; } var field = new DomCecilField(fieldDefinition); base.Add(field); AddDocumentation(field); } foreach (MethodDefinition methodDefinition in typeDefinition.Methods.Where(m => !m.IsConstructor)) { if (!loadInternal && DomCecilCompilationUnit.IsInternal(DomCecilType.GetModifiers(methodDefinition))) { continue; } var method = new DomCecilMethod(methodDefinition); base.Add(method); AddDocumentation(method); } bool internalOnly = true; bool hasConstructors = false; foreach (MethodDefinition methodDefinition in typeDefinition.Methods.Where(m => m.IsConstructor)) { hasConstructors = true; if (!loadInternal && DomCecilCompilationUnit.IsInternal(DomCecilType.GetModifiers(methodDefinition))) { continue; } internalOnly = false; base.Add(new DomCecilMethod(methodDefinition)); } if (hasConstructors && internalOnly) { base.TypeModifier |= TypeModifier.HasOnlyHiddenConstructors; } foreach (PropertyDefinition propertyDefinition in typeDefinition.Properties) { if (!loadInternal && DomCecilCompilationUnit.IsInternal(DomCecilType.GetModifiers(propertyDefinition.Attributes))) { continue; } base.Add(new DomCecilProperty(propertyDefinition)); } foreach (EventDefinition eventDefinition in typeDefinition.Events) { if (!loadInternal && DomCecilCompilationUnit.IsInternal(DomCecilType.GetModifiers(eventDefinition.Attributes))) { continue; } base.Add(new DomCecilEvent(eventDefinition)); } foreach (TypeDefinition nestedType in typeDefinition.NestedTypes) { if (!loadInternal && DomCecilCompilationUnit.IsInternal(DomCecilType.GetModifiers(nestedType.Attributes))) { continue; } DomCecilType innerType = new DomCecilType(nestedType, loadInternal); base.Add(innerType); if (typeParameters != null && innerType.typeParameters != null) { innerType.typeParameters.RemoveAll(para => typeParameters.Any(myPara => myPara.Name == para.Name)); } } }
void CheckInitialization () { if (isInitialized) return; isInitialized = true; foreach (FieldDefinition fieldDefinition in typeDefinition.Fields) { if (!loadInternal && DomCecilCompilationUnit.IsInternal (DomCecilType.GetModifiers (fieldDefinition))) continue; var field = new DomCecilField (fieldDefinition); base.Add (field); AddDocumentation (field); } foreach (MethodDefinition methodDefinition in typeDefinition.Methods.Where (m => !m.IsConstructor)) { if (!loadInternal && DomCecilCompilationUnit.IsInternal (DomCecilType.GetModifiers (methodDefinition))) continue; var method = new DomCecilMethod (methodDefinition); base.Add (method); AddDocumentation (method); } bool internalOnly = true; bool hasConstructors = false; foreach (MethodDefinition methodDefinition in typeDefinition.Methods.Where (m => m.IsConstructor)) { hasConstructors = true; if (!loadInternal && DomCecilCompilationUnit.IsInternal (DomCecilType.GetModifiers (methodDefinition))) continue; internalOnly = false; base.Add (new DomCecilMethod (methodDefinition)); } if (hasConstructors && internalOnly) base.TypeModifier |= TypeModifier.HasOnlyHiddenConstructors; foreach (PropertyDefinition propertyDefinition in typeDefinition.Properties) { if (!loadInternal && DomCecilCompilationUnit.IsInternal (DomCecilType.GetModifiers (propertyDefinition.Attributes))) continue; base.Add (new DomCecilProperty (propertyDefinition)); } foreach (EventDefinition eventDefinition in typeDefinition.Events) { if (!loadInternal && DomCecilCompilationUnit.IsInternal (DomCecilType.GetModifiers (eventDefinition.Attributes))) continue; base.Add (new DomCecilEvent (eventDefinition)); } foreach (TypeDefinition nestedType in typeDefinition.NestedTypes) { if (!loadInternal && DomCecilCompilationUnit.IsInternal (DomCecilType.GetModifiers (nestedType.Attributes))) continue; DomCecilType innerType = new DomCecilType (nestedType, loadInternal); base.Add (innerType); if (typeParameters != null && innerType.typeParameters != null) innerType.typeParameters.RemoveAll (para => typeParameters.Any (myPara => myPara.Name == para.Name)); } }