Вы можете создать второй класс, FileTransferPath, который имеет строковое значение «Путь» и значение перечисления «Источник»
class FileTransferSettings
{
public FileTransferPath UploadPath { get; set; }
public FileTransferPath DownloadPath { get; set; }
// ...
}
class FileTransferPath
{
public string Path { get; set; }
public FileTransferSource Source { get; set}
public enum FileTransferSource
{
None,
User,
Application,
// ...
}
}
Тогда вы можете использовать код как
obj.UploadPath.Path;
obj.UploadPath.Source;
Там могут быть лучшие имена, которые вы можете выбрать для свойств класса; Я не знаю, что мне нравится повторение Пути. obj.Upload.Path
или что-то может быть лучше.
Обратите внимание, что вы не сможете напрямую сериализовать / десериализовать это напрямую в формат, который вы используете, используя XmlSerialization; но он выполняет то, что вам нужно. (И вы все еще можете сериализовать в XML, вам просто нужно сделать немного больше работы)