英語で読む

次の方法で共有


Type.AssemblyQualifiedName プロパティ

定義

Type オブジェクトの読み込み元であるアセンブリの名前を含む型のアセンブリ修飾名を取得します。

C#
public abstract string AssemblyQualifiedName { get; }
C#
public abstract string? AssemblyQualifiedName { get; }

プロパティ値

Type の読み込み元であるアセンブリの名前を含む、Type のアセンブリ修飾名。現在のインスタンスがジェネリック型パラメーターを表す場合は null

実装

次の例では、 クラスに関連付けられているアセンブリ名と、型の完全修飾名を表示します。

C#
using System;

class MyAssemblyClass
{
    public static void Main()
    {
        Type objType = typeof(Array);

        // Print the assembly full name.
        Console.WriteLine($"Assembly full name:\n   {objType.Assembly.FullName}.");

        // Print the assembly qualified name.
        Console.WriteLine($"Assembly qualified name:\n   {objType.AssemblyQualifiedName}.");
    }
}
// The example displays the following output if run under the .NET Framework 4.5:
//    Assembly full name:
//       mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
//    Assembly qualified name:
//       System.Array, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.

次の例では、 メソッドによってToString返される文字列と、FullNameおよび プロパティをNameAssemblyQualifiedName比較します。

C#
using System;
using System.Collections.Generic;
using System.Globalization;

public class Example
{
    public static void Main()
    {
        Type t = typeof(String);
        ShowTypeInfo(t);

        t = typeof(List<>);
        ShowTypeInfo(t);

        var list = new List<String>();
        t = list.GetType();
        ShowTypeInfo(t);

        Object v = 12;
        t = v.GetType();
        ShowTypeInfo(t);

        t = typeof(IFormatProvider);
        ShowTypeInfo(t);

        IFormatProvider ifmt = NumberFormatInfo.CurrentInfo;
        t = ifmt.GetType();
        ShowTypeInfo(t);
    }

    private static void ShowTypeInfo(Type t)
    {
        Console.WriteLine($"Name: {t.Name}");
        Console.WriteLine($"Full Name: {t.FullName}");
        Console.WriteLine($"ToString:  {t}");
        Console.WriteLine($"Assembly Qualified Name: {t.AssemblyQualifiedName}");
        Console.WriteLine();
    }
}
// The example displays output like the following:
//    Name: String
//    Full Name: System.String
//    ToString:  System.String
//    Assembly Qualified Name: System.String, mscorlib, Version=4.0.0.0, Culture=neutr
//    al, PublicKeyToken=b77a5c561934e089
//
//    Name: List`1
//    Full Name: System.Collections.Generic.List`1
//    ToString:  System.Collections.Generic.List`1[T]
//    Assembly Qualified Name: System.Collections.Generic.List`1, mscorlib, Version=4.
//    0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
//
//    Name: List`1
//    Full Name: System.Collections.Generic.List`1[[System.String, mscorlib, Version=4
//    .0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
//    ToString:  System.Collections.Generic.List`1[System.String]
//    Assembly Qualified Name: System.Collections.Generic.List`1[[System.String, mscor
//    lib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorl
//    ib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
//
//    Name: Int32
//    Full Name: System.Int32
//    ToString:  System.Int32
//    Assembly Qualified Name: System.Int32, mscorlib, Version=4.0.0.0, Culture=neutra
//    l, PublicKeyToken=b77a5c561934e089
//
//    Name: IFormatProvider
//    Full Name: System.IFormatProvider
//    ToString:  System.IFormatProvider
//    Assembly Qualified Name: System.IFormatProvider, mscorlib, Version=4.0.0.0, Cult
//    ure=neutral, PublicKeyToken=b77a5c561934e089
//
//    Name: NumberFormatInfo
//    Full Name: System.Globalization.NumberFormatInfo
//    ToString:  System.Globalization.NumberFormatInfo
//    Assembly Qualified Name: System.Globalization.NumberFormatInfo, mscorlib, Versio
//    n=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

注釈

型のアセンブリ修飾名は、型名 (名前空間を含む) の後にコンマが続き、その後にアセンブリの表示名が続きます。 アセンブリの表示名は、 プロパティを Assembly.FullName 使用して取得されます。

注意

プロセッサ アーキテクチャはアセンブリ ID の一部であり、アセンブリ名文字列の一部として指定できます。 たとえば、"ProcessorArchitecture=msil" などです。 ただし、互換性上の理由から、 プロパティによって AssemblyQualifiedName 返される文字列には含まれません。 以下を参照してください。AssemblyName.ProcessorArchitecture

共通言語ランタイムをサポートするすべてのコンパイラは、入れ子になったクラスの単純な名前を出力し、リフレクションでは、次の規則に従って、クエリ時にマングル名を構築します。

区切り記号 説明
円記号 (\) エスケープ文字。
コンマ (,) アセンブリ名の前に置きます。
プラス記号 (+) 入れ子になったクラスの前。
ピリオド (.) 名前空間識別子を示します。
角かっこ ([]) 型名の後に、 はその型の配列を示します。

または

ジェネリック型の場合は、ジェネリック型引数リストを囲みます。

または

型引数リスト内で、アセンブリ修飾型を囲みます。

たとえば、クラスのアセンブリ修飾名は次のようになります。

TopNamespace.SubNameSpace.ContainingClass+NestedClass, MyAssembly, Version=1.3.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089

名前空間にプラス記号 (TopNamespace.Sub+Namespace など) が含まれている場合、プラス記号 (+) の前にエスケープ文字 (\) が付き、入れ子区切り記号として解釈されないようにします。 リフレクションでは、次のようにこの文字列が出力されます。

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass, MyAssembly, Version=1.3.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089

"++" は "\+\+" になり、"\" は "\" になります。

この修飾名は永続化でき、後で を使用して を Type読み込むことができます。 を検索して読み込む Typeには、型名のみを指定するか、アセンブリ修飾型名を使用 GetType します。 GetType 型名を指定すると、呼び出し元のアセンブリ内の が検索され、次に System アセンブリ内で が検索 Type されます。 GetType アセンブリ修飾型名を使用すると、任意のアセンブリで が Type 検索されます。

型名には、型が参照型、ポインター型、配列型のいずれであるかなど、型に関する追加情報を示す末尾の文字を含めることができます。 これらの末尾の文字を含まない型名を取得するには、 を使用 t.GetElementType().ToString()します。ここで t 、 は 型です。

スペースは、アセンブリ名を除くすべての型名コンポーネントに関連します。 アセンブリ名では、',' 区切り記号の前のスペースが関連しますが、',' 区切り記号の後のスペースは無視されます。

ジェネリック型のジェネリック引数自体は、アセンブリ名で修飾されます。 たとえば、 のアセンブリ修飾型名 MyGenericClass<int> (MyGenericClass(Of Integer) Visual Basic では ) int では、 のアセンブリ修飾型名 Int32に展開されます。

現在 Type の オブジェクトがジェネリック パラメーターを表す場合、このプロパティは を返します null

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

こちらもご覧ください