2011-01-17 11 views
1

私は自分のアプリケーションに書き込むカスタムクラスのデフォルト値を定義するためにDefaultValue属性を使いたいと思います。クラスは彼のコントラクターに文字列を与えます。 私がフォロー書く:C#のDefaultValue属性

[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")]を書き、MyClassのctorに文字列をパースします。しかし、今私はどのように私はDefaultValue属性で記述する値を各値のreciveことができますか? – RRR

2

私は、そのType.GetType( "MyClass")と思われます。

代わりにtypeof(文字列ではありません)を渡して、typeof(MyClass)を試すことができますか?

+0

これは機能しますが、今はこの属性の値を与えることができません。私はそれを与えるために何を書くべきですか? – RRR

+0

エラーが表示されますか?私はちょうどこれを読む:http://www.eggheadcafe.com/software/aspnet/323​​19410/defaultvalue-attribute-on-properties-of-user-controls.aspx値が表示されるときに少し説明します。 DefaultValueAttributesを使用する前に使用していないことを認めなければなりません。少し詳細を述べると助けになるかもしれません。このスレッドの他の人は、このコメントが表示された場合でも助けることができるかもしれません – WraithNath

1

Type.GetType()は、他の人が述べたように、方法(すなわち、定数式ではない)で、typeofを使用します。

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

編集:あなたがこれを行う方法のアイデアを得るためにthis documentationの例セクションを参照してください、それとのTypeConverterを関連付ける必要があり、あなたのカスタムクラスへの文字列の変換を有効にします。

+0

これは機能しますが、今はこの属性の値を与えることができません。私はそれを与えるために何を書くべきですか? – RRR

+0

私はDefaultValue属性をあまり使用していませんでしたが、私がしたときには型を与える必要はありませんでした。これ以上の値を使用したいのでbool:[DefaultValue(false)]のような値を入力しました。複雑な型の場合は、値を変換する方法を調べる必要があります。多分、クラスが動作するためのインタフェースを実装する必要があります。 –

+0

答えが更新されました。 –