Настройки приложения + DirectoryInfo / FileInfo - PullRequest
3 голосов
/ 27 августа 2010

Я все еще новичок в C # ... Я создаю приложение WPF и пытаюсь применить некоторые настройки пользовательских приложений.Легко вставить стандартные настройки приложения (int, double, string и т. Д.).У меня даже есть что-то вроде WindowState.

Я бы хотел, чтобы в качестве сохраняемых настроек вместо «Строки» использовались DirectoryInfo и / или FileInfo.

Выбранный тип: System.IO.File выдает сообщение об ошибке «Абстрактные типы не поддерживаются».

Что имеет смысл, поскольку как можно реализовать абстрактный тип в качестве параметра.

Выбранный тип: System.IO.FileInfo выдает сообщение об ошибке «Тип»System.IO.FileInfo 'не определен. ".

Можно ли установить DirectoryInfo / FileInfo в качестве параметров приложения?Является ли это возможным?Стоит времени?Как вы можете определить, что можно использовать как настройку, а что нет?

Мой опыт работы с пользовательскими настройками ограничен, и я пытаюсь расширить свои знания, и это поставило меня в тупик.

edit: я пытался опубликовать несколько скриншотов, но, видимо, я слишкомновый.Я работаю в Visual Studio, Настройки приложения.

Дополнительные примечания:

http://msdn.microsoft.com/en-us/library/a65txexh.aspx

Настройки приложения могут быть сохранены как любой тип данных, который являетсяXML сериализуется или имеет TypeConverter, который реализует ToString / FromString.Наиболее распространенными типами являются String, Integer и Boolean, но вы также можете сохранять значения как Color, Object или как строку подключения.

DirectoryInfo di = new DirectoryInfo(@"C:\");
di.ToString();

Я что-то упустил, так как в нем есть ToString() ...

1 Ответ

2 голосов
/ 27 августа 2010

Да, это невозможно. Настройки приложения сериализуются с использованием XML-сериализации. Одним из жестких требований к сериализации для класса является то, что он должен иметь конструктор без параметров. Ни у одного класса нет.

Это не настоящая проблема, потому что любой класс имеет конструктор, который принимает строку. Итак, сделайте настройку строкой, и вы всегда сможете получить из нее FileInfo или DirectoryInfo. Хотя он должен ссылаться на существующий объект файловой системы. Если это проблема, просто создайте свой собственный класс.

...