Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по дисциплине.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
63 Кб
Скачать
☆

Лабораторная работа № 2

Задание: Реализовать оконное приложение (Windows Forms).

Оконное приложение должно позволять создавать объекты, отображать список созданных объектов в табличной форме, выполнять поиск. Реализовать сериализацию и десериализацию классов в приложении. Интерфейс приложения должен быть дополнен кнопками для сохранения и загрузки классов из XML файлов.

Операции сохранения и загрузки XML файлов должны быть выполнены с использованием методов async и await.

Вспомогательный материал:

В Visual Studio должен быть выбран тип проекта – оконное приложение. Результат должен представлять собой исполняемый файл «*.exe».

В лабораторной работе необходимо создать по несколько объектов каждого класса, вывести созданные объекты в таблицу (таблицы). Для хранения списка объектов использовать шаблонный класс коллекцию System.Collections.Generic.List<T>. Для поиска использовать LINQ технологию.

Ресурсы:

Практическое руководство. Создание оконного приложения C#: http://msdn.microsoft.com/ru-ru/library/dd492132.aspx

LINQ to Objects: http://msdn.microsoft.com/ru-ru/library/bb397919.aspx

Async и await: http://stephenhaunts.com/2014/10/10/simple-async-await-example-for-asynchronous-programming/

Каждый класс в библиотеке классов должен быть помечен, как сериализуемый с использованием атрибута [Serializable]. Сериализация должна выполняться в xml-файл в текстовом виде (не бинарном).

Простой пример сериализации (в разделе «using» подключить пространство имен System.Xml.Serialization):

[Serializable]

public class GlobalSettingssDescriptor

{

public GlobalSettingssDescriptor()

{

}

private Guid _SettingsGuid;

public Guid SettingsGuid

{

get { return _SettingsGuid; }

set { _SettingsGuid = value; }

}

private string _ConnectionStringToWCServer;

public string ConnectionStringToWCServer

{

get { return _ConnectionStringToWCServer; }

set { _ConnectionStringToWCServer = value; }

}

private string _ConnectionStringToWCServerShowDirsTask;

public string ConnectionStringToWCServerShowDirsTask

{

get { return _ConnectionStringToWCServerShowDirsTask; }

set { _ConnectionStringToWCServerShowDirsTask = value; }

}

private string _ConnectionStringToWCServerDownloadFilesTask;

public string ConnectionStringToWCServerDownloadFilesTask

{

get { return _ConnectionStringToWCServerDownloadFilesTask; }

set { _ConnectionStringToWCServerDownloadFilesTask = value; }

}

private string _ConnectionStringToWCServerShowFilesInDirs;

public string ConnectionStringToWCServerShowFilesInDirs

{

get { return _ConnectionStringToWCServerShowFilesInDirs; }

set { _ConnectionStringToWCServerShowFilesInDirs = value; }

}

private string _ConnectionStringToAllIterations;

public string ConnectionStringToAllIterations

{

get { return _ConnectionStringToAllIterations; }

set { _ConnectionStringToAllIterations = value; }

}

private string _InstanceName;

public string InstanceName

{

get { return _InstanceName; }

set { _InstanceName = value; }

}

private string _UserName;

public string UserName

{

get { return _UserName; }

set { _UserName = value; }

}

private byte[] _UserPass;

public byte[] UserPass

{

get { return _UserPass; }

set { _UserPass = value; }

}

public string ProjectName { get; set; }

}

[Serializable]

public class AllGlobalSettingss

{

public List<GlobalSettingssDescriptor> GlobalSettingss = new List<GlobalSettingssDescriptor>(10);

public void AddSettingsDescription()

{

}

public void AddSettingsDescription(string UserName, string InstanceName, byte[] UserPass, string ConnectionStringToWCServer, string ConnectionStringToWCServerShowDirsTask, string ConnectionStringToWCServerDownloadFilesTask, string ConnectionStringToWCServerShowFilesInDirs, string AllIterationsText,string ProjectName)

{

GlobalSettingssDescriptor NewSettings = new GlobalSettingssDescriptor();

NewSettings.SettingsGuid = Guid.NewGuid();

NewSettings.UserName = UserName;

NewSettings.UserPass = UserPass;

NewSettings.ConnectionStringToWCServer = ConnectionStringToWCServer;

NewSettings.ConnectionStringToWCServerShowDirsTask = ConnectionStringToWCServerShowDirsTask;

NewSettings.ConnectionStringToWCServerDownloadFilesTask = ConnectionStringToWCServerDownloadFilesTask;

NewSettings.ConnectionStringToWCServerShowFilesInDirs = ConnectionStringToWCServerShowFilesInDirs;

NewSettings.InstanceName = InstanceName;

NewSettings.ConnectionStringToAllIterations = AllIterationsText;

NewSettings.ProjectName = ProjectName;

GlobalSettingss.Add(NewSettings);

}

}

public static bool SerializeGlobalSettingss(string PathToSettingssFile, AllGlobalSettingss GlobalSettingss)

{

try

{

XmlWriter writer = new XmlTextWriter(PathToSettingssFile, System.Text.Encoding.UTF8);

XmlSerializer serializer = new XmlSerializer(typeof(AllGlobalSettingss));

serializer.Serialize(writer, GlobalSettingss);

writer.Close();

return true;

}

catch (Exception exp)

{

return false;

}

}

public static AllGlobalSettingss DeserializeGlobalSettingss(string PathToSettingssFile)

{

try

{

XmlReader reader = new XmlTextReader(PathToSettingssFile);

XmlSerializer serializer = new XmlSerializer(typeof(AllGlobalSettingss));

AllGlobalSettingss GlobalSettingss = (AllGlobalSettingss)serializer.Deserialize(reader);

reader.Close();

return GlobalSettingss;

}

catch (Exception exp)

{

return new AllGlobalSettingss();

}

}

Ресурсы:

Сериализация: http://msdn.microsoft.com/ru-ru/library/ms233843.aspx

Примеры XML-сериализации: http://msdn.microsoft.com/ru-ru/library/vstudio/58a18dwa(v=vs.100).aspx

Сериализация, пример ресурса Code Project: http://www.codeproject.com/Articles/483055/XML-Serialization-and-Deserialization-Part (а так же http://www.codeproject.com/Articles/36781/Serialization-and-Deserialization-in-ASP-NET-with)