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); }
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); } }
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; }