enumと拡張メソッドと属性とT4とタームに関するツイートまとめ(C#)

いい勉強になりました。
1
ヒロ @cz75hiro

カスタム属性にGeneric定義できないのかぐぬー

2010-12-10 15:28:43
ヒロ @cz75hiro

カスタム属性はdynamicも指定できんのかーい

2010-12-10 16:13:37
ヒロ @cz75hiro

objectで受けてdynamicで返す…うーん

2010-12-10 16:14:39
ヒロ @cz75hiro

動くことは動くけど.Net4限定の拡張メソッドになるのはなんかもったいないな

2010-12-10 16:15:32
ぐるぐる系SQL @bleis

@cz75hiro 何をしようとしてますか?なんか属性でできないことをしようとしてるような・・・

2010-12-10 16:16:12
ヒロ @cz75hiro

@bleis enumの各要素にカスタム属性付けて、属性に与えた引数をenum拡張メソッドで返すというやつです。ネットで見たサンプルは指定した型でしか返せなかったので、汎用性持たせようとGenericとかdynamicで頑張ってるところでした。

2010-12-10 16:20:58
ぐるぐる系SQL @bleis

@cz75hiro 属性の引数として使える値ってかなり限られてるので、汎用性持たせるのは不可能なんじゃないかなぁ・・・ ちなみにサンプルは?

2010-12-10 16:23:38
ヒロ @cz75hiro

Literalって書いてるのにobject突っ込んでる時点でなんかアレ

2010-12-10 16:27:41
ヒロ @cz75hiro

@bleis ちなみに36行目のobjectをdynamicにしたら「属性の指定では動的な式を使用できません」というコンパイルエラーがでましたので、objectでお茶を濁してます。

2010-12-10 16:32:03
ぐるぐる系SQL @bleis

@cz75hiro 参照型って、string以外はnullくらいしか属性の引数として使えないので、やっぱり無理じゃないかなぁ。WPFみたいに自前でプロパティシステム作るか、NUnitのTestCase属性に対するTestCaseSourceみたいなものにするか・・・

2010-12-10 16:35:29
ぐるぐる系SQL @bleis

@takeshik あー、Typeもいけますね。typeofで

2010-12-10 16:37:12
ヒロ @cz75hiro

. @bleis @takeshik あんまりピンときてないんですけど、属性の引数にType渡して、Type.IsValueTypeを見るってことでしょうか?

2010-12-10 16:40:12
たけしけー @takeshik

@cz75hiro えっ…どういうことでしょう

2010-12-10 16:40:52
ぐるぐる系SQL @bleis

@cz75hiro いや、単に参照型で意味ある値を渡せるのはStringの他にもTypeもあったね、という話です

2010-12-10 16:41:30
ヒロ @cz75hiro

. @bleis @takeshik ああ、わかりました(^^; type渡したらうまくいくよって話になってるのかと勘違いしてました

2010-12-10 16:43:17
ヒロ @cz75hiro

実行時に値型じゃなかったらexception投げる…とStringで死ぬ

2010-12-10 16:47:21
たけしけー @takeshik

@bleis @cz75hiro 私だったら属性なんて面倒くさいことするのはやめて IDictionary<MemberInfo, object> なりを裏でリポジトリとして抱えて…ってやってしまいたくもなりますね

2010-12-10 16:53:58
ぐるぐる系SQL @bleis

@takeshik そしてスニペットを用意して(ry

2010-12-10 16:55:15
たけしけー @takeshik

というか俺が言うのもなんだが変態すぎる

2010-12-10 16:56:18
ぐるぐる系SQL @bleis

@takeshik に褒めてもらえるなんて @cz75hiro さんうらやましすぎる(棒読み

2010-12-10 16:59:23
ヒロ @cz75hiro

変態は褒め言葉です(キリッ)

2010-12-10 17:01:40
ヒロ @cz75hiro

@bleis 属性に入れる値を変える場合、毎回クラスを作る必要があるっていうのは、汎用性を考えるとどうも食指が動きませんねー…

2010-12-10 17:01:25