- - PR -
C# Attributeのつかいどころがわからない
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-17 11:46
C# の場合、Windows API 呼び出す時に必須ですよね。(DllImportAttribute) もちろん、使う必要がない場合も多いですけど。
使い方はすでに書いています。 クラス ライブラリ仕様書を自動生成する時に使用しています。
Author とか、UpdateDateTime とかですね。
わけが分からなくなること必至ですから、私はないです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-09-17 11:50
>Kazuk様
なるほど。if文などで使うことはまずないのですね。 >ognac様 具体的に説明していただきありがとうございます。 propertyのsetアクセッサの中でリフレクションからformatパラメータ を読むのですね。 なんというかリフレクションとの組み合わせで class CheckReg { //いろいろなクラスのext属性を持つフィールドの //正規表現チェックを行って結果を返す public Result Check(object obj) } というような構造化ができそうな気がします。 ただ確かに多用すると逆にスパゲッティになりそうな気もしますね。。 >Edosson様 どうしても気になってしまいます笑 Edosson様はどのようにしてお使いですか?よろしければお教えください。 | ||||||||||||||||
|
投稿日時: 2006-09-17 12:38
あっ、なんで COM の時って書いたんだろう、 COM でも使うけれど WindowsAPI のほうが解りやすかったですよね | ||||||||||||||||
|
投稿日時: 2006-09-17 14:46
まあすでに出ているような使い方をするわけだ。
使いどころがわからんのは使うべき場面に出くわしていないか、本当に無知で使えなかったのかどちらかだろう。 おそらく使うべき場面に出くわしていないだけなので使いたいからって無理に使う必要もない。 | ||||||||||||||||
|
投稿日時: 2006-09-19 16:24
私は列挙型の項目に文字列などを割り当てる時に使うことがあります。
まず属性型を作ります。
列挙型の項目に作った属性を適用します。
列挙型の項目は、CIL上はクラスのフィールドとして表現されているようなので、以下のようなメソッドを定義して、
以下のようにすると属性のインスタンスが取れます。
後はattr.Nameを見れば"月曜日"という文字列が取れます。 | ||||||||||||||||
|
投稿日時: 2006-09-19 17:25
System.ComponentModel 名前空間のものは良く使いますね。
あとは Serializable とか Obsolete とか。 【追記】 試しにコントロールとか作ってみると、使いどころが判るんじゃないでしょうか。 [ メッセージ編集済み 編集者: きくちゃん 編集日時 2006-09-19 17:36 ] | ||||||||||||||||
|
投稿日時: 2006-09-19 17:38
>>一郎様
なるほど。。 未熟者ですので正しいかどうかわかりませんが、enumの機能が無理なく拡張 されているかと思います。 Youbi をクラスで定義することもできるかと思いますが、その場合に比べて どのようなメリットがありますか? よろしければお教えください | ||||||||||||||||
|
投稿日時: 2006-09-20 19:50
そうですね。例えば
構造体にしてみましたが、こんな感じになるんでしょうか?(動作確認はしてません) ・・・いや、いいんじゃないでしょうか。 これでもいいですね。(こういう型は作ったことないけど) 列挙型は、数値に名前を振っただけみたいな感じなので、複雑な機能を持たない単純な値の場合はすっきりしていいですよね。 あと、VisualStudioのIntelliSenseに余計なメンバー(Equalsとか)の一覧が出なかったり、扱う場合にクラスより高速に動作する(?)などあると思います。 逆にクラスにすると、メソッドを持てるので何らかの機能を付けることができると思います。(例えば休日かどうかの判定をするメソッドとか) 複雑な機能がある場合はこっちですね。 ------------ 前の書き込みの日曜日が"San"になってた・・・・ はずかしい。 ------------ SunとかMonとかはreadonlyじゃないとまずいですね。修正しました。 [ メッセージ編集済み 編集者: 一郎 編集日時 2006-09-21 09:54 ] |