コード例 #1
0
 private void ButtonDownloadDeserializedObjects_Click(object sender, EventArgs e)
 {
     if (OpenFileDialog.ShowDialog() == DialogResult.OK)
     {
         string fileName          = OpenFileDialog.FileName;
         string serializedObjects = File.ReadAllText(OpenFileDialog.FileName);
         for (int i = 0; i < ComboBoxCoders.Items.Count; i++)
         {
             ICodingPlugin plugin = (ICodingPlugin)ComboBoxCoders.Items[i];
             if (plugin.Extension == fileName.Substring(fileName.LastIndexOf(".")))
             {
                 serializedObjects = Encoding.UTF8.GetString(plugin.Decode(serializedObjects));
                 fileName          = fileName.Substring(0, fileName.LastIndexOf("."));
             }
         }
         for (int i = 0; i < ComboBoxSerializers.Items.Count; i++)
         {
             SerializerFactory factory = (SerializerFactory)ComboBoxSerializers.Items[i];
             if (factory.Extension == fileName.Substring(fileName.LastIndexOf(".")))
             {
                 ISerializer serializer = factory.CreateSerializer();
                 applicationDataContext.Objects = serializer.Deserialize(serializedObjects);
                 applicationDataContext.ComboBoxObjectsRefresh();
                 return;
             }
         }
         MessageBox.Show("Сериализатора или плагина с таким расширением не найдено(");
     }
 }
コード例 #2
0
ファイル: CodingPlugins.cs プロジェクト: Vakenrovec/CRUD
        public void RefreshPlugins()
        {
            DirectoryInfo pluginDirectory = new DirectoryInfo(pluginPath);

            if (!pluginDirectory.Exists)
            {
                pluginDirectory.Create();
            }

            string[] pluginFiles = Directory.GetFiles(pluginPath, "*.dll");
            foreach (var file in pluginFiles)
            {
                Assembly asm = Assembly.LoadFrom(file);
                IEnumerable <ICodingPlugin> types = asm.GetTypes().
                                                    Where(t => t.GetInterface(nameof(ICodingPlugin)) != null)
                                                    .Select(x => Activator.CreateInstance(x))
                                                    .Cast <ICodingPlugin>();
                //Where(i => i.FullName == typeof(ICodingPlugin).FullName).Any());

                foreach (var type in types)
                {
                    ICodingPlugin plugin = asm.CreateInstance(type.FullName) as ICodingPlugin;
                    plugins.Add(plugin);
                }
            }
        }
コード例 #3
0
        private void ButtonSaveSerializedObjects_Click(object sender, EventArgs e)
        {
            if (SaveFileDialog.ShowDialog() == DialogResult.OK)
            {
                string fileName = SaveFileDialog.FileName;

                SerializerFactory factory           = (SerializerFactory)ComboBoxSerializers.SelectedItem;
                ISerializer       serializer        = factory.CreateSerializer();
                string            serializedObjects = serializer.Serialize(applicationDataContext.Objects);
                fileName += factory.Extension;

                if (CheckBoxCoder.Checked)
                {
                    ICodingPlugin plugin = (ICodingPlugin)ComboBoxCoders.SelectedItem;
                    serializedObjects = plugin.Code(Encoding.UTF8.GetBytes(serializedObjects));
                    fileName         += plugin.Extension;
                }

                File.WriteAllText(SaveFileDialog.FileName, serializedObjects);
                File.Move(SaveFileDialog.FileName, fileName);
            }
        }