属性の適用Applying Attributes

コードの要素に属性を適用するには、次のプロセスを使用します。Use the following process to apply an attribute to an element of your code.

  1. 新しい属性を定義するか、または .NET Framework から名前空間をインポートして既存の属性を使用します。Define a new attribute or use an existing attribute by importing its namespace from the .NET Framework.

  2. 属性をコード要素の直前に記述することで、その要素に属性を適用します。Apply the attribute to the code element by placing it immediately before the element.

    各言語には独自の属性構文があります。Each language has its own attribute syntax. C++ および C# では、属性が角かっこで囲まれ、要素とは空白で区切られます。属性と要素の間には改行を入れることもできます。In C++ and C#, the attribute is surrounded by square brackets and separated from the element by white space, which can include a line break. Visual Basic では、属性が山かっこで囲まれ、同じ論理行に記述されている必要があります。改行が必要な場合は、行連結文字を使用できます。In Visual Basic, the attribute is surrounded by angle brackets and must be on the same logical line; the line continuation character can be used if a line break is desired.

  3. 属性に、位置指定パラメーターと名前付きパラメーターを指定します。Specify positional parameters and named parameters for the attribute.

    位置指定パラメーターは必須で、名前付きパラメーターの前に指定する必要があります。位置指定パラメーターは、属性のいずれかのコンストラクターのパラメーターに対応します。Positional parameters are required and must come before any named parameters; they correspond to the parameters of one of the attribute's constructors. 名前付きパラメーターは省略可能で、属性の読み取り/書き込みプロパティに対応します。Named parameters are optional and correspond to read/write properties of the attribute. C++ と C# では、オプションのパラメーターごとに name=value を指定します。name はプロパティの名前です。In C++, and C#, specify name=value for each optional parameter, where name is the name of the property. Visual Basic では、name:=value を指定します。In Visual Basic, specify name:=value.

コードをコンパイルすると属性がメタデータに格納され、ランタイム リフレクション サービスを通じて共通言語ランタイム、すべてのカスタム ツールやアプリケーションで使用できるようになります。The attribute is emitted into metadata when you compile your code and is available to the common language runtime and any custom tool or application through the runtime reflection services.

規則では、属性の名前の最後は Attribute にします。By convention, all attribute names end with Attribute. ただし、Visual Basic や C# など、ランタイムを対象とする言語では、属性をフルネームで指定する必要はありません。However, several languages that target the runtime, such as Visual Basic and C#, do not require you to specify the full name of an attribute. たとえば、System.ObsoleteAttribute を初期化する場合は、Obsolete と指定するだけで参照できます。For example, if you want to initialize System.ObsoleteAttribute, you only need to reference it as Obsolete.

メソッドへの属性の適用Applying an Attribute to a Method

次の例では、System.ObsoleteAttribute をどのように宣言するかを解説しています。これは、コードを Obsolete として記述しておくために使用します。The following code example shows how to declare System.ObsoleteAttribute, which marks code as obsolete. 文字列 "Will be removed in next version" が属性に渡されます。The string "Will be removed in next version" is passed to the attribute. 属性が記述されているコードが呼び出された時点で、渡された文字列を示すコンパイラの警告が表示されます。This attribute causes a compiler warning that displays the passed string when code that the attribute describes is called.

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

ref class Test
{
public:
    static void Main()
    {
        // This generates a compile-time warning.
        int i = Example::Add(2, 2);
    }
};

int main()
{
    Test::Main();
}
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

アセンブリ レベルでの属性の適用Applying Attributes at the Assembly Level

アセンブリ レベルで属性を適用する場合は、キーワード assembly (Visual Basic では Assembly) を使用します。If you want to apply an attribute at the assembly level, use the assembly (Assembly in Visual Basic) keyword. AssemblyTitleAttribute をアセンブリ レベルで適用するコードを次に示します。The following code shows the AssemblyTitleAttribute applied at the assembly level.

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

この属性が適用されると、ファイルのメタデータ部分のアセンブリ マニフェストの中に、文字列 "My Assembly" が挿入されます。When this attribute is applied, the string "My Assembly" is placed in the assembly manifest in the metadata portion of the file. この属性を表示するには、MSIL 逆アセンブラー (Ildasm.exe) を使用するか、または属性を取得するためのプログラムを作成します。You can view the attribute either by using the MSIL Disassembler (Ildasm.exe) or by creating a custom program to retrieve the attribute.

参照See also