public void GetFieldNames()

in vsintegration/src/FSharp.ProjectSystem.Base/Project/Web/CodeBehindCodeGenerator.cs [311:387]


		public /*protected, but public for FSharp.Project.dll*/ void GetFieldNames(CodeClass codeClass, bool caseSensitive, bool onlyBaseClasses, int depth, int maxDepth, ref FieldDataDictionary fields)
		{
			if (codeClass != null && depth <= maxDepth)
			{
				if (!(onlyBaseClasses && depth == 0))
				{
					foreach (CodeElement codeElement in codeClass.Members)
					{
						//vsCMElement kind = codeElement.Kind; //vsCMElementVariable
						CodeVariable codeVariable = codeElement as CodeVariable;
						if (codeVariable != null)
						{
							FieldData field = new FieldData(codeClass, codeVariable, depth);

							if (field != null && !string.IsNullOrEmpty(field.Name))
							{
								if (fields == null)
								{
									fields = new FieldDataDictionary(caseSensitive);
								}

								try
								{
									if (!fields.ContainsKey(field.Name))
									{
										fields.Add(field.Name, field);
									}
								}
								catch
								{
								}
							}
						}
					}
				}

				foreach (CodeElement baseCodeElement in codeClass.Bases)
				{
					CodeClass baseCodeClass = baseCodeElement as CodeClass;
					if (baseCodeClass != null)
					{
						CodeElements partCodeElements = null;
						CodeClass2 baseCodeClass2 = baseCodeClass as CodeClass2;
						if (baseCodeClass2 != null)
						{
							vsCMClassKind classKind = baseCodeClass2.ClassKind;
							if ((classKind | vsCMClassKind.vsCMClassKindPartialClass) == vsCMClassKind.vsCMClassKindPartialClass)
							{
								try
								{
									partCodeElements = baseCodeClass2.Parts;
								}
								catch
								{
								}
							}
						}

						if (partCodeElements != null && partCodeElements.Count > 1)
						{
							foreach (CodeElement partCodeElement in partCodeElements)
							{
								CodeClass partCodeClass = partCodeElement as CodeClass;
								if (partCodeClass != null)
								{
									GetFieldNames(partCodeClass, caseSensitive, onlyBaseClasses, depth + 1, maxDepth, ref fields);
								}
							}
						}
						else
						{
							GetFieldNames(baseCodeClass, caseSensitive, onlyBaseClasses, depth + 1, maxDepth, ref fields);
						}
					}
				}
			}
		}