C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: 属性の利用法


(過去ログ 34 を表示中)

[トピック内 27 記事 (1 - 20 表示)]  << 0 | 1 >>

■16202 / inTopicNo.1)  属性の利用法
  
□投稿者/ ネタ好き (10回)-(2008/03/31(Mon) 16:51:19)

分類:[.NET 全般] 

属性のメリットは理解できるものの、私はいまいち属性を使いこなせておりません。
そこで、強者ぞろいのこの場所で訊ねようと思いました。
皆様は属性をどのように使用しておりますか?
ご意見が頂ければ幸いです。
引用返信 編集キー/
■16203 / inTopicNo.2)  Re[1]: 属性の利用法
□投稿者/ 774RR (145回)-(2008/03/31(Mon) 17:01:45)
えっと、その属性はネタ属性ですかマジ属性ですか?
ネタ属性として、俺ちゃんには妹属性とかそー言うのはありませんけど・・・
マジ属性ならごめんちゃい。
引用返信 編集キー/
■16205 / inTopicNo.3)  Re[2]: 属性の利用法
□投稿者/ 鶏唐揚 (16回)-(2008/03/31(Mon) 17:26:27)
No16203 (774RR さん) に返信
> えっと、その属性はネタ属性ですかマジ属性ですか?
> ネタ属性として、俺ちゃんには妹属性とかそー言うのはありませんけど・・・
> マジ属性ならごめんちゃい。
吹かせていただきましたw

マジレスすると、メソッドに付加させる属性のことですよね?
私も同様に使いこなせてないですが、DLLやらクラスライブラリやらを作る時に使用します.
具体的なワードは度忘れしましたが、特定のメソッドをコード補完機能から隠したいときとか…
引用返信 編集キー/
■16206 / inTopicNo.4)  Re[3]: 属性の利用法
□投稿者/ ネタ好き (11回)-(2008/03/31(Mon) 17:47:44)
774RRさん、あんたって言う人は・・・面白すぎるw
かなり受けました。
人の属性といえば、私はやっぱり「幸薄属性」かな?
ちなみに、他人からよくシスコン気味だといわれています(笑)
ネタも捨てがたいのですが、今回はマジでお願いします。


鶏唐揚さんへ
その通りです。属性プログラミングの方向でお願いします。

>特定のメソッドをコード補完機能から隠したいときとか
早速よいネタを頂き嬉しく思っております。
成る程、VSがらみの使い方は便利ですね。
引用返信 編集キー/
■16207 / inTopicNo.5)  Re[1]: 属性の利用法
□投稿者/ aetos (1回)-(2008/03/31(Mon) 17:57:56)
No16202 (ネタ好き さん) に返信
> 属性のメリットは理解できるものの、私はいまいち属性を使いこなせておりません。
> そこで、強者ぞろいのこの場所で訊ねようと思いました。
> 皆様は属性をどのように使用しておりますか?
> ご意見が頂ければ幸いです。

自分で新しい属性を設計する話題はあまり見ないですね。
で、.NET の属性は、ProxyAttribute(とその派生属性)とそれ以外の属性で大きく違うと思います。
ContextBoundObject 派生クラスに ProxyAttribute 派生属性をつけると、その属性がついているだけで、対象のクラスに一定の処理を行わせることができます(間違えていたら訂正お願いします)。
そうでない属性は、基本的に、リフレクションでその属性がついているかどうか調べて、何らかの処理を行います。
この場合、属性は、そのクラスを扱う利用者に対するマークとして機能します。
引用返信 編集キー/
■16208 / inTopicNo.6)  Re[2]: 属性の利用法
□投稿者/ ネタ好き (12回)-(2008/03/31(Mon) 18:15:08)
aetosさん情報提供有難うございます。
確かにあの属性は良い例ですね。
引用返信 編集キー/
■16210 / inTopicNo.7)  Re[3]: 属性の利用法
□投稿者/ ネタ好き (13回)-(2008/03/31(Mon) 18:24:15)
関連事項として、追加してお聞きしたい事があります。

属性プログラミングは利点はあるものの、私の誤解かもしれませんが、
以下の弱点もあると思います。
1・リフレクションによるパフォーマンス劣化。
2・属性の適用順序によりバグが発生するかもしれない。
3・配布後に変更すると意外な影響が発生する。

使用法の他に、この様な弱点・バットノウハウ・注意点などの実際の作業に遭遇するであろう、
属性に関係した事項のご意見も頂きたいと思います。
引用返信 編集キー/
■16215 / inTopicNo.8)  Re[4]: 属性の利用法
□投稿者/ なちゃ (116回)-(2008/03/31(Mon) 18:57:16)
パフォーマンスは、ある程度は工夫次第ではありますが、やっぱり濫用するものではありませんね。

属性の適用順序は結構引っかかりやすいですね。
まあ属性の機能をみていけば基本的に順序に依存するようなことをしてはいけないのは
何となく読み取れるんですが、順序が取れたらなあと思うことはやっぱりありますね。

引用返信 編集キー/
■16282 / inTopicNo.9)  Re[5]: 属性の利用法
□投稿者/ ネタ好き (21回)-(2008/04/02(Wed) 13:53:05)
2008/04/02(Wed) 13:54:42 編集(投稿者)

なちゃ さんコメント有難うございます。
そうなんですよ。自作属性の結果が他の属性により上書きされないか心配になります。
それとか、特権が必要な属性を提供する便利なライブラリを使用した途端、
中にウイルスコードか何かを埋め込まれていて、誰かに悪さされないかも心配です。
他にもインスタンスが適用されるという視点を忘れてバグを書いてしまいそうです。
引用返信 編集キー/
■16285 / inTopicNo.10)  Re[4]: 属性の利用法
□投稿者/ シャノン (354回)-(2008/04/02(Wed) 14:13:04)
No16210 (ネタ好き さん) に返信
> 3・配布後に変更すると意外な影響が発生する。

これは、例えば属性の変更によって違う型とみなされてしまうとかいうことですかね。
引用返信 編集キー/
■16287 / inTopicNo.11)  Re[5]: 属性の利用法
□投稿者/ ネタ好き (24回)-(2008/04/02(Wed) 14:29:27)
No16285 (シャノン さん) に返信
> ■No16210 (ネタ好き さん) に返信
>>3・配布後に変更すると意外な影響が発生する。
>
> これは、例えば属性の変更によって違う型とみなされてしまうとかいうことですかね。

シャノンさん返信有難うございます。その様なことも起こりうると思います。
私が思ったのは、配布後に属性クラスの挙動を改善したい時、
単純に属性のコードを変更したら、ユーザにとっては見えずに挙動が変わるので、
再配布がしづらいのではないかと言う事です。
もちろんこれは、オブジェクト指向でもいえる事ですが、
属性の場合より見えにくくなるのではないかと考えたのです。
引用返信 編集キー/
■16496 / inTopicNo.12)  Re[6]: 属性の利用法
□投稿者/ ネタ好き (42回)-(2008/04/07(Mon) 12:22:09)
属性が見えにくいのは、オブジェクト指向の場合縦に影響を与えますが、
属性は分散して影響を与えます。
どこに何の属性が使用されているかはリフレクションを使えば分かりますが、
作成者はどのように使用されているか想像できない場合が多いし、
(ある程度制御できますが)
使用者にとっては、属性をどこにつけたか忘れがちであり、
テスト時にリフレクションを使用して検出するプログラムを書かないと思います。
これらの問題は人間の意識の問題なのですが、
属性って強力だけども、使いどころが難しいですね。
引用返信 編集キー/
■16694 / inTopicNo.13)  Re[1]: 属性の利用法
□投稿者/ Algol (5回)-(2008/04/09(Wed) 18:06:09)
2008/04/09(Wed) 18:26:24 編集(投稿者)
2008/04/09(Wed) 18:26:13 編集(投稿者)

No16202 (ネタ好き さん) に返信
> 属性のメリットは理解できるものの、私はいまいち属性を使いこなせておりません。
> そこで、強者ぞろいのこの場所で訊ねようと思いました。
> 皆様は属性をどのように使用しておりますか?
> ご意見が頂ければ幸いです。

最近、プロパティグリッドを使った開発をしまして、プロパティグリッドに表示するコンポーネントやクラスによく使いました。
いちお、プロパティグリッドに限定したものですが、これも属性を使ったプログラミングってことで…
その時に主に使った属性はこの辺です。

CategoryAttribute:プロパティディスプレイのカテゴリー欄
DisplayNameAttribute:プロパティディスプレイの名称欄
DescriptionAttribute:プロパティディスプレイの説明欄
TypeConverterAttribute:オブジェクトのコンバータ
EditorAttribute:プロパティ変更時のエディタ
DesignerSerializationVisibilityAttribute:デザイン時のシリアル化の方法の指定
AttributeUsageAttribute:別の属性クラスの使用方法の指定

BrowsableAttribute:プロパティを表示するかどうか
AttributeProviderAttribute:属性のリダイレクトの設定
MergablePropertyAttribute:プロパティをほかのオブジェクトに属するプロパティと組み合わせる

あと、他でよく使うもので…

FlagsAttribute:列挙体をビット フィールド、つまりフラグのセットとして扱えることを示します。(by MSDN)

#他にも思い出したので一部追加しました。


引用返信 編集キー/
■16717 / inTopicNo.14)  Re[2]: 属性の利用法
□投稿者/ ネタ好き (62回)-(2008/04/09(Wed) 23:41:57)
No16694 (Algol さん) に返信
有難うございます。かなり参考になりました。
私も何か思いついたら書き込みます。
引用返信 編集キー/
■16770 / inTopicNo.15)  Re[3]: 属性の利用法
□投稿者/ ネタ好き (70回)-(2008/04/10(Thu) 13:08:34)
ああ、あかんネタを言いたくなってきた。
在ったら嫌な属性(バットノウハウ)

・名前がFooAtributoで機能が不明な属性ー名前間違っている上に意味不明な属性
・起動するたびにコードの内容をどこかに知らせる属性ースパイ属性
・万能すぎて何をしているのか把握しきれない属性ー反UNIX的思想?
・間違った情報を出力するログ属性ー開発者に対する嫌がらせ
・10000回に1回の確率で何もしない属性ー怠惰属性
・たまにMessageBoxを出力する属性ーばやき属性
・実行すると社内の女子社員へセクハラメールを送る属性ーセクハラ属性
・実行すると妹萌えーと出力する属性ーシスコン属性
・適用するとメッセージボックスを2チャンネル風に変えてしまう属性ー毒属性
引用返信 編集キー/
■16773 / inTopicNo.16)  Re[4]: 属性の利用法
□投稿者/ シャノン (383回)-(2008/04/10(Thu) 13:44:13)
2008/04/10(Thu) 13:44:34 編集(投稿者)

No16770 (ネタ好き さん) に返信
> ああ、あかんネタを言いたくなってきた。
> 在ったら嫌な属性(バットノウハウ)

炎系のモンスターに2倍ダメージ、水系のモンスターにはHPを回復させてしまう…水属性
不死系のモンスターに2倍ダメージ、天使系のモンスターにはHPを回復させてしまう…聖属性
風系の(以下略
引用返信 編集キー/
■16776 / inTopicNo.17)  Re[5]: 属性の利用法
□投稿者/ ネタ好き (73回)-(2008/04/10(Thu) 14:42:55)
2008/04/10(Thu) 14:45:41 編集(投稿者)
No16773 (シャノン さん) に返信
> 2008/04/10(Thu) 13:44:34 編集(投稿者)
>
> ■No16770 (ネタ好き さん) に返信
>>ああ、あかんネタを言いたくなってきた。
>>在ったら嫌な属性(バットノウハウ)
>
> 炎系のモンスターに2倍ダメージ、水系のモンスターにはHPを回復させてしまう…水属性
> 不死系のモンスターに2倍ダメージ、天使系のモンスターにはHPを回復させてしまう…聖属性
> 風系の(以下略

そのネタがあったか!
ファンタジーくるとは予想外(笑)

追記
もう一つ思いついた
・不規則に例外をスローする属性ーお邪魔属性
引用返信 編集キー/
■16779 / inTopicNo.18)  Re[5]: 属性の利用法
□投稿者/ シャノン (384回)-(2008/04/10(Thu) 15:25:37)
No16773 (シャノン さん) に返信
> 2008/04/10(Thu) 13:44:34 編集(投稿者)
>
> ■No16770 (ネタ好き さん) に返信
>>ああ、あかんネタを言いたくなってきた。
>>在ったら嫌な属性(バットノウハウ)
>
> 炎系のモンスターに2倍ダメージ、水系のモンスターにはHPを回復させてしまう…水属性
> 不死系のモンスターに2倍ダメージ、天使系のモンスターにはHPを回復させてしまう…聖属性
> 風系の(以下略

現場のプログラマに2倍ダメージ、営業には業績を上げさせてしまう…仕様変更属性

実行時に不定期に顧客が仕様変更したくなる。
ソースコードからこの属性を削ってもいつの間にか復活している。
引用返信 編集キー/
■16780 / inTopicNo.19)  Re[1]: 属性の利用法
□投稿者/ シャノン (385回)-(2008/04/10(Thu) 15:31:13)
No16202 (ネタ好き さん) に返信
> 属性のメリットは理解できるものの、私はいまいち属性を使いこなせておりません。
> そこで、強者ぞろいのこの場所で訊ねようと思いました。
> 皆様は属性をどのように使用しておりますか?
> ご意見が頂ければ幸いです。

InternalsVisibleTo も面白いですね。
引用返信 編集キー/
■16783 / inTopicNo.20)  Re[4]: 属性の利用法
 
□投稿者/ シャノン (386回)-(2008/04/10(Thu) 15:32:58)
2008/04/10(Thu) 15:33:15 編集(投稿者)

No16770 (ネタ好き さん) に返信
> ああ、あかんネタを言いたくなってきた。
> 在ったら嫌な属性(バットノウハウ)
>
> ・起動するたびにコードの内容をどこかに知らせる属性ースパイ属性
> ・実行すると社内の女子社員へセクハラメールを送る属性ーセクハラ属性

スパイ属性、セクハラ属性、InternalsVisibleTo属性が揃うと、取引先に不定期に
「私の恥ずかしいところ、見てください」
というタイトルのメールで、ソースコードの一番かっこ悪いところを送りつける。
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -