掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
属性とは? (ID:147434)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 情報の付加以上のことを行っているように思えます。 付加された情報が「どこで利用されるのか」が焦点となります。 属性それ自体には、情報(メタデータ)を付加するだけの役割しかありません。 重要なのは、その情報がどこで何のために利用されるかです。 AssemblyCopyrightAttribute は、.NET のアセンブリに対して 著作権情報を設定するために使われます。 http://www.atmarkit.co.jp/fdotnet/dotnettips/187asmverinfo/asmverinfo.html ObsoleteAttribute を使うと、特定のメソッドやクラスを使ったコードを コンパイルしたときに、警告メッセージを発したり、あるいはそもそも コンパイルが通らないようにエラー扱いにすることができます。 http://wiki.sh4e.net/?Attribute%2FObsoleteAttribute ConditionalAttribute を指定すると、条件付きコンパイル定数が 定義されている場合のみ、メソッドの呼び出しを行うようにすることが出来ます。 http://smdn.jp/programming/netfx/conditional/ BrowsableAttribute、CategoryAttribute、DescriptionAttribute を プロパティやイベントに付与した場合、Visual Studio デザイナの [プロパティ] ウィンドウに、その項目が表示されるかどうかといった 実行時には関係のない、デザイン時情報を付与することができます。 http://msdn.microsoft.com/ja-jp/library/aa302334.aspx DebuggerDisplayAttribute、DebuggerBrowsableAttribute、DebuggerTypeProxy などは、 Visual Studio 等のデバッガに対して、変数ウィンドウでの型あるいはそのメンバの 表示形式を制御するために使われる、デバッグを行いやすくするための属性です。 http://www.atmarkit.co.jp/fdotnet/dotnettips/994debugdisp/debugdisp.html DebuggerStepThroughAttribute を使うと、デバッグ時にステップ実行の 対象とならないようにしたり、ブレークポイントを無効にするなどの 制御を行うことができます。 http://www.atmarkit.co.jp/fdotnet/dotnettips/362stepthrough/stepthrough.html このように、属性が与える影響というものはランタイムの動作だけには留まりません。 EXE にする以前の段階、すなわちコンパイラやプリコンパイラなどによって 解釈されるものもありますし、あるいは Visual Studio などの 開発環境/デバッガーによって利用されるものもあります。 もちろん、自分で新たな属性を利用し、それを自アプリから利用することもできます。 > DllImport属性は、マネージアプリケーションからアンマネージコードを DllImportAttribute が付与されたメソッドをコンパイルすると、中間言語(msil)に対して プラットフォーム呼び出しのための pinvokeimpl 属性が付与されます。 これにより、アンマネージ DLL にある API を呼び出すことが指示されます。 ただし、すべての .NET 対応言語のコンパイラがそうというわけではありません。 たとえば JScript の場合、そもそも API 呼出しに対応していないため、 DllImportAttribute を正しく処理できません。 (まぁ、System.Reflection.Emit を用いれば、JScript.NET からでも、 API を呼べないわけでは無いですけれども…)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.