private InterfaceS GetSerializer(string filepath) { InterfaceS serializer = null; bool flag = false; //ищем нужный сериализатор foreach (Type ser in SerializerList) { serializer = (InterfaceS)Activator.CreateInstance(ser); //проверяем, то ли расширение файла if ((serializer.FileExtension).IndexOf(Path.GetExtension(filepath)) != -1) { flag = true; break; } } if (flag) { return(serializer); } else { return(null); } }
private void btnUploadS_Click(object sender, EventArgs e) { object loadObject; if (openDialog.ShowDialog() == DialogResult.Cancel) { return; } string filePath = openDialog.FileName; try { InterfaceS serializer = GetSerializer(filePath); if (serializer == null) { MessageBox.Show("Десериализация не удалась!"); return; } //десериализуем и кидаем в лист объектов loadObject = serializer.Deserialize(filePath); ObjectList.Add(loadObject); Redraw(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void btnSaveS_Click(object sender, EventArgs e) { if (lvService.SelectedItems.Count == 0) { return; } //создаем объект и помещаем туда выбранный из списка object selectedObj = new object(); selectedObj = ObjectList[lvService.SelectedIndices[0]]; InterfaceS serializer = (InterfaceS)Activator.CreateInstance(SerializerList[cbSerializer.SelectedIndex]); saveDialog.Filter = serializer.FileExtension; if (saveDialog.ShowDialog() == DialogResult.Cancel) { return; } string filePath = saveDialog.FileName; serializer.Serialize(selectedObj, filePath); //время для цирка с кодировкой DialogResult choice = MessageBox.Show("Хотите закодировать файл?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (choice == DialogResult.Yes) { if (cbCoding.SelectedIndex == -1) { MessageBox.Show("Кодировка не выбрана, кодирование не было проведено."); return; } //подгрузка плагина Assembly assembly = Assembly.LoadFile(PluginList[cbCoding.SelectedIndex]); //ищем в библиотеке конкретный класс и вызываем метод Encode string str = Path.GetFileNameWithoutExtension(PluginList[cbCoding.SelectedIndex]); object obj = assembly.CreateInstance(str + ".CodingAlgorithms"); Type type = obj.GetType(); type.GetMethod("Encode").Invoke(obj, new object[] { filePath }); } }
private void btnSaveS_Click(object sender, EventArgs e) { if (lvService.SelectedItems.Count == 0) { return; } //создаем объект и помещаем туда выбранный из списка object selectedObj = new object(); selectedObj = ObjectList[lvService.SelectedIndices[0]]; InterfaceS serializer = (InterfaceS)Activator.CreateInstance(SerializerList[cbSerializer.SelectedIndex]); saveDialog.Filter = serializer.FileExtension; if (saveDialog.ShowDialog() == DialogResult.Cancel) { return; } string filePath = saveDialog.FileName; serializer.Serialize(selectedObj, filePath); }
private void btnUploadS_Click(object sender, EventArgs e) { object loadObject; if (openDialog.ShowDialog() == DialogResult.Cancel) { return; } string filePath = openDialog.FileName; try { //проверяем кодировали ли мы что-то if (GetSerializer(filePath) == null) { if (IsDecoded(ref filePath) == false)//если не вышло раскодировать { MessageBox.Show("Не загружен алгоритм для дешифрования."); return; } } InterfaceS serializer = GetSerializer(filePath); if (serializer == null) { MessageBox.Show("Десериализация не удалась!"); return; } //десериализуем и кидаем в лист объектов loadObject = serializer.Deserialize(filePath); ObjectList.Add(loadObject); Redraw(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }