public void ClassKind_ClassIsNotPartial_ReturnsMainClassKind() { CreateProjectContent(); CreatePublicClass("MyClass"); vsCMClassKind kind = codeClass.ClassKind; Assert.AreEqual(vsCMClassKind.vsCMClassKindMainClass, kind); }
/// <summary> /// Adds a class to the <see cref="CodeNamespace"/> and supports adding a partial class. /// </summary> /// <param name="codeNamespace"><see cref="CodeNamespace"/> instance.</param> /// <param name="name">Name of the class.</param> /// <param name="baseName">Name of the base class. Null indicates no base class.</param> /// <param name="access">Class access.</param> /// <param name="classKind">Class kind.</param> /// <returns><see cref="CodeClass"/> instance.</returns> internal static CodeClass AddClassWithPartialSupport(this CodeNamespace codeNamespace, string name, string baseName, vsCMAccess access, vsCMClassKind classKind) { // Workaround to support existing partial class, set name after. CodeClass codeClass = codeNamespace.AddClass(Resources.TempClassName, AppConstants.PLACE_AT_THE_END, baseName, null, access); (codeClass as CodeClass2).ClassKind = classKind; codeClass.Name = name; return codeClass; }
/// <summary> /// Adds a class to the <see cref="CodeNamespace"/> and supports adding a partial class. /// </summary> /// <param name="codeNamespace"><see cref="CodeNamespace"/> instance.</param> /// <param name="name">Name of the class.</param> /// <param name="baseName">Name of the base class. Null indicates no base class.</param> /// <param name="access">Class access.</param> /// <param name="classKind">Class kind.</param> /// <returns><see cref="CodeClass"/> instance.</returns> internal static CodeClass AddClassWithPartialSupport(this CodeNamespace codeNamespace, string name, string baseName, vsCMAccess access, vsCMClassKind classKind) { // Workaround to support existing partial class, set name after. CodeClass codeClass = codeNamespace.AddClass(Resources.TempClassName, AppConstants.PLACE_AT_THE_END, baseName, null, access); (codeClass as CodeClass2).ClassKind = classKind; codeClass.Name = name; return(codeClass); }
///------------------------------------------------------------------------------------------------------------- /// <summary> /// Returns field names in the specified class using code model. /// If publicOnly is true only public fields are returned. /// </summary> ///------------------------------------------------------------------------------------------------------------- protected 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); } } } } }