Как объявить значение по умолчанию перечисляемого свойства? - PullRequest
3 голосов
/ 03 декабря 2011

Как установить значение по умолчанию перечисляемого свойства?

например:

public enum SearchBoxMode { Instant, Regular };


[DefaultValue(SearchBoxMode.Instant)]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }    

[DefaultValue((int)SearchBoxMode.Instant)]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }    

[DefaultValue(SearchBoxMode.GetType(), "Instant")]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }    

[DefaultValue(SearchBoxMode.GetType(), "SearchBoxMode.Instant")]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }    

Несвязанный вопрос: Как я могу получить Type перечисления? например, * +1008 *

Type type = DialogResult.GetType();

не работает.

1 Ответ

9 голосов
/ 03 декабря 2011

Значение по умолчанию для перечисления равно 0 для типа с подчиненным типом, даже если 0 не определено для этого перечисления.Все остальное должно быть сделано вручную, например:

SearchBoxMode mode = SearchBoxMode.Instant; // field initializer

Использование [DefaultValue(...)] влияет только на такие вещи, как сериализация и PropertyGrid - фактически это свойство не устанавливает для свойства значение по умолчанию.Правильный синтаксис в соответствии с вашим первым примером:

SearchBoxMode mode = SearchBoxMode.Instant;
[DefaultValue(SearchBoxMode.Instant)]
public SearchBoxMode Mode { get { return mode; } set { mode = value;  } }  

Другой подход - конструктор:

[DefaultValue(SearchBoxMode.Instant)]
public SearchBoxMode Mode { get; set; }

public YourType() {
    Mode = SearchBoxMode.Instant;
}

re второй вопрос;typeof(DialogResult)

...