トップページ > プログラム > 2015年10月09日 > AWj2PSbP

書き込み順位&時間帯一覧

2 位/136 ID中時間01234567891011121314151617181920212223Total
書き込み数0002000000000000110002006



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
VB.NET質問スレ(Part42) [転載禁止]©2ch.net

書き込みレス一覧

C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
120 :デフォルトの名無しさん[]:2015/10/09(金) 03:17:38.95 ID:AWj2PSbP
あるクラスがあって、このクラスに継承可能で複数設定できる属性がつけられてる
このクラスを継承すると、その属性も継承するわけだが、属性は継承したくないんだ
継承したクラスで、元のクラスについてる属性消す方法ってないかな?
C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
122 :デフォルトの名無しさん[sage]:2015/10/09(金) 03:42:47.55 ID:AWj2PSbP
>>121
属性そのものをいじりたいんじゃなくて、継承元クラスについてる属性を消したいんだよ

その継承元クラスについてる属性のAttributeUsageはInherited=true, AllowMultiple=trueだが
それを変えたいわけじゃない
VB.NET質問スレ(Part42) [転載禁止]©2ch.net
616 :デフォルトの名無しさん[sage]:2015/10/09(金) 16:27:50.81 ID:AWj2PSbP
>>615
おれもそう思ってたんだが、それが明示されてるドキュメントがみつからん
2013で試してみたけど、拡張メソッドの定義そのものはできるな
呼び出そうとすると、Option Strict Onだとコンパイルエラー
Offだと実行時エラー
どうもObjectに対する未定義のメソッドはすべて遅延バインドだと解釈されるようだ
定義はできるみたいだから、C#とかからなら呼び出せるかもしれんが試してない

>>608はどこでどううまくいかないのかわからんが、まあ、VB.Netではできないという結論
ObjectにLengthとかないから、おそらくOption Strict Offなんだろうな
Onにしとく事をお勧めするぞ
C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
124 :デフォルトの名無しさん[sage]:2015/10/09(金) 17:31:11.35 ID:AWj2PSbP
>>123
やっぱり無理か
読み取り側を変更するぐらいなら、渡すクラスも一から自作するわ
なんでプロパティじゃなくて属性なんかで設定するようにしやがったんだろう

なんとなく使い分けてるけど
プロパティで実装するべきか、属性で設定するべきか、使い分けの指針とかあるのかな?
設定する基準がインスタンス単位かクラス単位か?
C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
128 :デフォルトの名無しさん[sage]:2015/10/09(金) 21:25:12.13 ID:AWj2PSbP
>>126
メタ情報っていう用語も実際のとこ、俺にはちゃんと説明できない用語だが
単なるタグだっていうなら、動作に影響するようなものは属性で制御すべきじゃないのかと

たとえば検証に関してなら、エラーメッセージは属性が適当かもしれんが
最大桁数や、エラーチェックするかどうかは属性で制御するのが適当だろうか?

>>127
それはまさに、通常の情報なのかメタ情報なのかの違いだと思うが
その意見は、メタ情報じゃなく通常の情報としてインプリメントしろって意見だろ
C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
132 :デフォルトの名無しさん[sage]:2015/10/09(金) 21:57:49.30 ID:AWj2PSbP
>>130
なるほど、Enumのメンバー名がメタ情報だってのは理解できる
2重にメタデータもつなってのも納得した

では、属性の使いどころはどこだろう
元の言語仕様でサポートされてない開発者独自のメタ情報の表現のため?
じゃあメタじゃない情報を属性で扱うってのはやっぱり下策なのだろうか


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。