private void GetGlobalTypeForType(FieldNameFinder inNameFinder, ConstantValue tmpConstant, string tmpVal) { //Check for in Variable List var tmpVar = inNameFinder.VariableList?.FirstOrDefault(inItem => inItem.Name == tmpVal); if (tmpVar != null) { tmpConstant.Value = tmpVar; tmpConstant.Type = tmpVar.Type; //TODO load class for Type inNameFinder.Class = ProjectInformation.ClassFromBaseType(tmpVar.Type); } else { //TODO Check for Parent CLass FieldList var tmpField = inNameFinder.Class?.FieldList?.FirstOrDefault(inItem => inItem.Name == tmpVal); if (tmpField != null) { tmpConstant.Value = tmpField; tmpConstant.Type = tmpField.Type; //TODO load class for Type inNameFinder.Class = ProjectInformation.ClassFromBaseType(tmpField.Type); } else { //Check for Static Types, System aliases or other Unknown Type var tmpStaticClassOrUnknown = ProjectInformation.GetClassOrUnknownForType(tmpVal, inNameFinder.Class ?? inNameFinder.MethodeParentClass ?? new ClassContainer()); //tmpConstant.Value = tmpStaticClassOrUnknown.Type; if (tmpConstant.Type != null) { tmpConstant.Type.Type = tmpStaticClassOrUnknown.Type.Type; } else { tmpConstant.Type = tmpStaticClassOrUnknown.Type; } inNameFinder.Class = tmpStaticClassOrUnknown; } } }
/// <summary> /// Create Project from system known data /// </summary> /// <param name="inProject"></param> /// <param name="inAliasList"></param> /// <param name="inSystemNamespace"></param> public static ProjectInformation CreateSystemProjectInformation(List <ClassContainer> inSystemClassList, List <AliasObject> inAliasList, string inSystemNamespace) { var tmpProject = new ProjectInformation(); tmpProject.FillClasses(inSystemClassList); foreach (var tmpAlias in inAliasList) { tmpProject.AddAlias(tmpAlias.To, tmpProject.GetClassOrUnknownForType(tmpAlias.From, new List <string> { inSystemNamespace })); } return(tmpProject); }