Example #1
0
        public void Serialize(ObjectTypeItems objectTypesItems)
        {
            //DeleteCash();
            // BAD:
            var converter = new ReflectionObjectModelToYamlConverter(objectTypesItems);

            _stringTypeItems = converter.GetStringTypesHash();
            _fileName        = $"{objectTypesItems.AssemblyName}.yaml";
            var text = new Serializer().Serialize(_stringTypeItems);

            Save(text);
        }
Example #2
0
 private void LoadAssembly()
 {
     try
     {
         _assembly = Assembly.LoadFrom(_dllPath);
         var types = GetTypesFromAssembly().ToList();
         types                         = CreateAsseblyTreeRelations(types);
         _objectTypeItems              = GetTypesInfo(types);
         _objectTypeItems.FilePath     = _assembly.EscapedCodeBase;
         _objectTypeItems.AssemblyName = _assembly.GetName().Name;
         _objectTypeItems.Namespaces   = GetNamespaces();
         _objectTypeItems.Attributes   = GetAttributes();
     }
     // BAD: нужен отлов разных исключений по типу: ошибка чтения файла, неправильный формат, другое..
     catch (Exception e)
     {
         Write(e.Message);
     }
 }
Example #3
0
        private ObjectTypeItems GetTypesInfo(ICollection <AssemblyType> types)
        {
            var objectTypeItems = new ObjectTypeItems();

            foreach (var type in types)
            {
                if (type.Methods != null)
                {
                    foreach (var method in type.Methods)
                    {
                        if (!objectTypeItems.Methods.ContainsKey(method.ToString()))
                        {
                            objectTypeItems.Methods.Add(method.ToString(), method);
                        }
                    }
                }
                if (type.Properties != null)
                {
                    foreach (var property in type.Properties)
                    {
                        if (!objectTypeItems.Properties.ContainsKey(property.ToString()))
                        {
                            objectTypeItems.Properties.Add(property.ToString(), property);
                        }
                    }
                }
                if (type.Events != null)
                {
                    foreach (var @event in type.Events)
                    {
                        if (!objectTypeItems.Events.ContainsKey(@event.ToString()))
                        {
                            objectTypeItems.Events.Add(@event.ToString(), @event);
                        }
                    }
                }
                if (type.Constructors != null)
                {
                    foreach (var constructor in type.Constructors)
                    {
                        if (!objectTypeItems.Constructors.ContainsKey(constructor.ToString()))
                        {
                            objectTypeItems.Constructors.Add(constructor.ToString(), constructor);
                        }
                    }
                }
                if (type.Fields != null)
                {
                    foreach (var field in type.Fields)
                    {
                        if (!objectTypeItems.Fields.ContainsKey(field.ToString()))
                        {
                            objectTypeItems.Fields.Add(field.ToString(), field);
                        }
                    }
                }
            }
            // BAD: это таки не хеш ))
            objectTypeItems.Types = types.ToDictionary(type => type.ToString());

            return(objectTypeItems);
        }
 public ReflectionObjectModelToYamlConverter(ObjectTypeItems objectTypeItems)
 {
     _objectTypeItems = objectTypeItems;
 }