2011-01-17 2 views
1

Я хочу использовать атрибут DefaultValue для определения значения по умолчанию для пользовательского класса, который я пишу в своем приложении. класс дает в своем конструкторе строку. я пишу последующие:Атрибут DefaultValue в C#

[DefaultValue(Type.GetType("MyClass"),"hello world")] 

, но когда я пытаюсь запустить это приложение. Я даю ошибку:

"An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type".

может кто-нибудь объяснить мне, в чем проблема?

ответ

6

Вы используете Type.GetType("MyClass"), где у вас должно быть typeof(MyClass).

+0

, но это не работает, но теперь я не могу добиться значения этого атрибута. что я могу написать, чтобы дать это? – RRR

+0

Думаю, вам нужно подробно объяснить, что вы пытаетесь сделать. –

+0

Я пытаюсь создать перечисление, чтобы его значения не были int или char. поэтому я пишу перед каждым значением - [DefaultValue (Type.GetType («MyClass»), «11:00:00»)], а в ctor MyClass я parss строку. но теперь, как я могу получить для каждого значения значение, которое я пишу в атрибуте DefaultValue? – RRR

2

Я подозреваю, что Type.GetType («MyClass»);

Вы можете попробовать typeof (MyClass) вместо этого, передавая тип, а не строку?

+0

это работает, но теперь я не могу добиться значения этого атрибута. что я могу написать, чтобы дать это? – RRR

+0

Вы получаете сообщение об ошибке? Я просто прочитал это: http://www.eggheadcafe.com/software/aspnet/32319410/defaultvalue-attribute-on-properties-of-user-controls.aspx он немного объясняет, когда значение будет видно. Должен признаться, я не использовал DefaultValueAttributes перед тем, как поставить, чтобы я мог помочь, если вы можете дать немного больше деталей. Другие ребята в этом потоке могут также помочь, если они видят этот комментарий – WraithNath

1

Type.GetType() - метод (т. Е. Не постоянное выражение), как говорят другие, используют typeof.

[DefaultValue(typeof(MyClass),"Convertible String")] 

Edit: Чтобы включить преобразование строки в пользовательский класс, который вы должны связать TypeConverter с ним, смотрите примеры сечение this documentation, чтобы получить представление о том, как сделать это.

+0

он работает, но теперь я не могу добиться значения этого атрибута. что я могу написать, чтобы дать это? – RRR

+0

Я не использовал атрибут DefaultValue много, но когда я это сделал, мне никогда не нужно было указывать его тип, я просто ввел какое-то значение, подобное этому для bool: [DefaultValue (false)], так как вы хотите использовать более сложный тип, вы должны посмотреть, как он пытается преобразовать значение, возможно, вашему классу необходимо реализовать интерфейс для его работы. –

+0

Обновленный ответ. –

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