2009-11-01 3 views
2

мне нужно как этотесть ли атрибут инициализатора значения по умолчанию?

public class AA{ 
    public AA(){} 
    [Default("hi")] 
    public string value1{get;set} 
    [Default(12)] 
    public int value2{get;set;} 
} 

Использование:

AA a=new AA(); 
print(a.value1); //result: hi 
print(a.value2); //result: 12 

Можно ли создать подобное?

Я знаю еще один способ

Public class AA{ 
    public AA(){value1="hi";value2=12} 
    ... 
} 

В противном случае

AA a=new AA(){value1="hi",value2=12}; 

Но мне нужно только атрибут.

ответ

6

Нет, но вы можете легко инициализировать их в своем конструкторе без параметров.

public class AA 
{ 
    public AA() 
    { 
     // default values 
     Value1 = "hi"; 
     Value2 = 12; 
    } 

    public string Value1 {get;set} 
    public int Value2 {get;set;} 
} 

Или вместо использования автоматически реализованных свойств использовать фактические свойства с полями инициализации до значения по умолчанию.

public class AA 
{ 
    private string _value1 = "hi"; 
    public string Value1 
    { get { return _value1; } } 
    { set { _value1 = value; } } 

    private int _vaule2 = 12; 
    public int Value2 
    { get { return _value2; } } 
    { set { _value2 = value; } } 
} 

Создание свойства с фактическим полем поддержки не является такой большой проблемой, связанной с фрагментами Visual Studio. Набрав prop в VS и нажав клавишу Tab, вы получите полный фрагмент для свойства чтения/записи.

[Редактировать] Проверить эту нить также: How do you give a C# Auto-Property a default value?

[Еще один править] Если ваш считаю, что это сделает его более удобным для чтения, проверить по следующей ссылке: это получить/установить фрагмент кода, который будет генерировать свойство с необходимым полем поддержки и автоматически добавить вокруг него блок #region, чтобы свернуть код: Snippets at CodePlex (by Omer van Kloeten). Загрузите его и проверьте фрагмент Get+Set Property (prop).

+0

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

+0

Но как это связано с наличием значений по умолчанию для свойств? Если ваш класс является классом типа «набор параметров», тогда вам нужно иметь значения по умолчанию. – Groo

0

В настоящее время нет. В настоящее время единственными параметрами являются установка этого в конструкторе или использование свойства с полем поддержки.

Однако вы можете использовать PostSharp, чтобы реализовать это через АОП довольно легко. (Хотя, я не считаю, что в настоящее время это вариант).

Смежные вопросы