Значение по умолчанию для перечисления равно 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)