/// <summary> /// Find or Create Class for Name and Using-List /// </summary> /// <param name="inProject"></param> /// <param name="inClassName"></param> /// <param name="inPossibleNamespaces"></param> /// <returns></returns> public static ClassContainer GetClassOrUnknownForType(this ProjectInformation inProject, string inClassName, List <string> inPossibleNamespaces) { if (string.IsNullOrEmpty(inClassName)) { return(null); } var tmpClass = inProject.ClassForNameAndNamespaces(inClassName, inPossibleNamespaces); if (tmpClass != null) { return(tmpClass); } if (inProject.GetAliasType(inClassName) != null) { return(inProject.GetAliasType(inClassName)); } var tmpUnknown = inProject.UnknownClassForNameAndNamespaces(inClassName, inPossibleNamespaces); if (tmpUnknown == null) { tmpUnknown = new UnknownTypeClass(inClassName) { PossibleNamespace = inPossibleNamespaces }; inProject.AddUnknownClass(tmpUnknown); } return(tmpUnknown); }
/// <summary> /// Find or Create Class for Name and Using-List /// </summary> /// <param name="inProject"></param> /// <param name="inClassName"></param> /// <param name="inPossibleNamespaces"></param> /// <returns></returns> public static ClassContainer GetClassOrUnknownForType(this ProjectInformation inProject, string inClassName, ClassContainer inParentClass) { if (string.IsNullOrEmpty(inClassName)) { return(null); } var tmpClass = inProject.ClassForNameAndNamespaces(inClassName, inParentClass.FullUsingList); if (tmpClass != null) { return(tmpClass); } if (inProject.GetAliasType(inClassName) != null) { return(inProject.GetAliasType(inClassName)); } if (inParentClass.Type == null) { return(null); } var tmpGenericType = inParentClass.Type.GenericTypes.FirstOrDefault(inItem => inItem.Name == inClassName); if (tmpGenericType != null) { return(new ClassContainer { Type = tmpGenericType, Parent = inProject }); } var tmpParentClass = inParentClass; while (tmpParentClass != null) { var tmpField = tmpParentClass.FieldList.FirstOrDefault(inItem => inItem.Name == inClassName); if (tmpField != null) { return(new ClassContainer { Type = tmpField.Type, Parent = inProject }); } tmpParentClass = tmpParentClass.GetParentClass(); } var tmpUnknown = inProject.UnknownClassForNameAndNamespaces(inClassName, inParentClass.FullUsingList); if (tmpUnknown == null) { tmpUnknown = new UnknownTypeClass(inClassName) { PossibleNamespace = inParentClass.FullUsingList, Parent = inProject }; inProject.AddUnknownClass(tmpUnknown); } return(tmpUnknown); }