Конвертировать тип в метод set, возможно? Когда да как? - PullRequest
4 голосов
/ 08 октября 2009

думаю, я хотел собрать командную строку с флагами и так далее. Флаги имеют тип bool, но командная строка представляет собой строку типа "/ activeFlag". Есть ли способ программирования установщика в C #, который принимает bool, но получатель возвращает строку?

как

private string activeFlag {
 get { return activeFlag; }
 set {
    // the value here should be the bool
    activeFlag = value ? " /activeFlag" : "";
 }
}

Ответы [ 4 ]

10 голосов
/ 08 октября 2009

Нет способа иметь свойство с разными типами данных для его установщика и получателя.

Что вы можете сделать, это примерно так:

private bool IsActiveFlagSet { get { return ActiveFlag == " /activeFlag"; } }
private string ActiveFlag { get; set; }
1 голос
/ 08 октября 2009

Вам нужен другой сеттер.

private string activeFlag { 
 get { return _activeFlag; } 
}
private bool activeFlagByBool { 
 set { 
    // the value here should be the bool 
    _activeFlag = value ? " /activeFlag" : ""; 
 } 
} 
0 голосов
/ 08 октября 2009

Я не верю, взгляните на этот проект Автоматический анализ командной строки в C # Я использовал это, и это хорошее решение.

0 голосов
/ 08 октября 2009

Нет, но вы можете использовать пользовательский TypeConverter для достижения того же самого, через TypeDescriptor. Если ты действительно хотел. Не уверен, что это того стоит, если только вы отчаянно не хотите отобразить его в DataGridView, PropertyGrid или подобном

Существует также проблема разделения проблем; цель флага - понять логическое значение - строковое представление относится только к пользовательскому интерфейсу. Вы можете использовать пользовательский атрибут:

[CommandLine("/activeFlag")]
public bool IsActive {get;set;}

и взять оттуда?

...