public void UpdateRelation(IModuleRelation relation) { if (moduleRelations.ContainsKey(relation.ModuleId.Value)) { moduleRelations[relation.ModuleId.Value] = relation; } else { moduleRelations.Add(relation.ModuleId.Value, relation); } }
public void RemoveRelation(IModuleRelation relation) { moduleRelations.Remove(relation.ModuleId.Value); }
public void AddRelation(IModuleRelation relation) { moduleRelations.Add(relation.ModuleId.Value, relation); }
private void Wise_Type(ITypeInfo type, IParseModule module) { string error; foreach (var p in type.PropertyInfos) { var types = ParseType(p.Type, module, out error); if (!string.IsNullOrWhiteSpace(error)) { AddError(new ParseErrorInfo() { FileId = module.FileId, File = module.File, CharPositionInLine = p.TokenPair.BeginToken.CharPositionInLine, ErrorType = ErrorType.Error, Line = p.TokenPair.BeginToken.Line, Message = error }); } if (types == null || types.Count == 0) { AddError(new ParseErrorInfo() { FileId = module.FileId, File = module.File, CharPositionInLine = p.TokenPair.BeginToken.CharPositionInLine, ErrorType = ErrorType.Error, Line = p.TokenPair.BeginToken.Line, Message = string.Format("当前上下文无此类型{0}", p.Type) }); } else if (types.Count > 1) { AddError(new ParseErrorInfo() { FileId = module.FileId, File = module.File, CharPositionInLine = p.TokenPair.BeginToken.CharPositionInLine, ErrorType = ErrorType.Error, Line = p.TokenPair.BeginToken.Line, Message = string.Format("当前上下文有多个此类型{0}:{1}" , p.Type , String.Join(",", types.Select(x => x.FullName).ToArray())) }); } else { p.TypeInfo = types[0]; } if (types == null) { return; } types.ForEach(x => { if (x.FileId.HasValue)//说明不是.NET类型 { var dependence_Fellow = GlobalService.DepencyManager.GetRelation(module.FileId); if (dependence_Fellow == null) { dependence_Fellow = new ModuleRelationBase(); dependence_Fellow.ModuleId = module.FileId; GlobalService.DepencyManager.AddRelation(dependence_Fellow); } IModuleRelation dependence = GlobalService.DepencyManager.GetRelation(x.FileId.Value); if (dependence == null) { dependence = new ModuleRelationBase() { ModuleId = x.FileId.Value }; GlobalService.DepencyManager.AddRelation(dependence); } if (!dependence.Follows.Contains(dependence_Fellow.ModuleId.Value)) { if (dependence.ModuleId != dependence_Fellow.ModuleId) { dependence.Follows.Add(dependence_Fellow); } } } }); } }