Задать значение по-умолчанию для поля класса

350
29 марта 2017, 14:26

Доброго времени суток!

Как при помощи атрибута [DefaultValue()] задать значение по умолчанию полю имеющий тип "Class"?

Например:

public class MyClass
{
[DefaultValue("Здесь хотел назначить значение по-умолчанию")]
Public MyPropertyType MyProperty {get;set;}
}
public class MyPropertyType
{
    public int Key {get;set;}
    public string Value {get;set;}
    public int SomeKey {get;set}
}
Answer 1

Может как-нибудь так:

public class MyClass
{
    Public MyPropertyType MyProperty {get;set;}
    public MyClass()
    {
         MyProperty = new MyPropertyType();
         MyProperty.Value = 1; 
    }
public class MyPropertyType
{
    public int Key {get;set;}
    public string Value {get;set;}
    public int SomeKey {get;set}

}
Answer 2

Вы не сможете передать в конструктор атрибута DefaultValue конструкцию наподобие этой:

[DefaultValue(new MyPropertyType())]
public MyPropertyType MyProperty { get; set; }

по причине того, что параметры конструкторов атрибутов должны разрешаться на этапе компиляции и, согласно спецификации языка C#, они ограничены константными значениями следующих типов:

  • bool, byte, char, double, float, int, long, sbyte, short, uint, ulong, ushort
  • System.String
  • System.Object
  • System.Type

Также допустимы одномерные массивы этих типов и типы перечислений (enums).

READ ALSO
Системный разделитель

Системный разделитель

Проблема с dataGridView, когда по умолчанию в системе стоит разделитель "," матюкается БД что не может привести varchar к numeric меняешь разделитель на "" все...

296
POST-Запрос и его ответ

POST-Запрос и его ответ

Вступление: У РЖД есть такая программа лояльности - РЖД БонусСуть её в том, что за успешные поездки пассажирам полагается некий бонус

277
Сравнение данных 2-х массивов C#

Сравнение данных 2-х массивов C#

Дано два массива :

297
Почему sayi1 принемает значение sayi2?

Почему sayi1 принемает значение sayi2?

sayi1 принемает значения sayi2 не могу понять почемуВроде бы sayi2 = sayi1 то есть в sayi2 перекидываются значения sayi1 но потом когда sayi2 = 5 и это же значение...

303