Ejemplo n.º 1
0
 public void UpdateRelation(IModuleRelation relation)
 {
     if (moduleRelations.ContainsKey(relation.ModuleId.Value))
     {
         moduleRelations[relation.ModuleId.Value] = relation;
     }
     else
     {
         moduleRelations.Add(relation.ModuleId.Value, relation);
     }
 }
Ejemplo n.º 2
0
 public void RemoveRelation(IModuleRelation relation)
 {
     moduleRelations.Remove(relation.ModuleId.Value);
 }
Ejemplo n.º 3
0
 public void AddRelation(IModuleRelation relation)
 {
     moduleRelations.Add(relation.ModuleId.Value, relation);
 }
Ejemplo n.º 4
0
 public void UpdateRelation(IModuleRelation relation)
 {
     if (moduleRelations.ContainsKey(relation.ModuleId.Value))
     {
         moduleRelations[relation.ModuleId.Value] = relation;
     }
     else
     {
         moduleRelations.Add(relation.ModuleId.Value, relation);
     }
 }
Ejemplo n.º 5
0
 public void RemoveRelation(IModuleRelation relation)
 {
     moduleRelations.Remove(relation.ModuleId.Value);
 }
Ejemplo n.º 6
0
 public void AddRelation(IModuleRelation relation)
 {
     moduleRelations.Add(relation.ModuleId.Value, relation);
 }
Ejemplo n.º 7
0
            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);
                                }
                            }
                        }
                    });
                }
            }