次の方法で共有


属性を適用する

コードの要素に属性を適用するには、次のプロセスを使用します。

  1. 新しい属性を定義するか、既存の .NET 属性を使用します。

  2. 要素の直前に配置して、コード要素に属性を適用します。

    各言語には、独自の属性構文があります。 C++ と C# では、属性は角かっこで囲まれ、要素から空白で区切られ、改行を含めることができます。 Visual Basic では、属性は山かっこで囲まれており、同じ論理行上にある必要があります。改行が必要な場合は、行連結文字を使用できます。

  3. 位置指定パラメーターと属性の名前付きパラメーターを指定します。

    位置指定 パラメーターは必須であり、名前付きパラメーターの前に指定する必要があります。属性のコンストラクターの 1 つのパラメーターに対応します。 名前付き パラメーターは省略可能であり、属性の読み取り/書き込みプロパティに対応します。 C++ と C# では、省略可能な各パラメーターに name=value を指定します。ここで、 name はプロパティの名前です。 Visual Basic で、 name:=valueを指定します。

この属性は、コードをコンパイルするときにメタデータに出力され、ランタイム リフレクション サービスを介して共通言語ランタイムおよびカスタム ツールまたはアプリケーションで使用できます。

慣例により、すべての属性名は "Attribute" で終わっています。 ただし、Visual Basic や C# など、ランタイムを対象とする複数の言語では、属性の完全な名前を指定する必要はありません。 たとえば、 System.ObsoleteAttributeを初期化する場合は、 古い形式として参照するだけで済みます。

メソッドに属性を適用する

次のコード例は、コードを古いものとしてマークする System.ObsoleteAttributeの使用方法を示しています。 "Will be removed in next version"文字列が属性に渡されます。 この属性は、属性が記述するコードが呼び出されたときに渡された文字列を表示するコンパイラ警告を発生させます。

public class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
    [Obsolete("Will be removed in next version.")]
    public static int Add(int a, int b)
    {
        return (a + b);
    }
}

class Test
{
    public static void Main()
    {
        // This generates a compile-time warning.
        int i = Example.Add(2, 2);
    }
}
Public Class Example
    ' Specify attributes between square brackets in C#.
    ' This attribute is applied only to the Add method.
    <Obsolete("Will be removed in next version.")>
    Public Shared Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function
End Class

Class Test
    Public Shared Sub Main()
        ' This generates a compile-time warning.
        Dim i As Integer = Example.Add(2, 2)
    End Sub
End Class

アセンブリ レベルで属性を適用する

アセンブリ レベルで属性を適用する場合は、 assembly (Visual Basic でAssembly ) キーワードを使用します。 次のコードは、アセンブリ レベルで適用 AssemblyTitleAttribute を示しています。

using System.Reflection;
[assembly:AssemblyTitle("My Assembly")]
Imports System.Reflection
<Assembly: AssemblyTitle("My Assembly")>

この属性を適用すると、 "My Assembly" 文字列はファイルのメタデータ部分のアセンブリ マニフェストに配置されます。 属性を表示するには、 IL 逆アセンブラー (Ildasm.exe) を使用するか、属性を取得するカスタム プログラムを作成します。

こちらも参照ください