Прочитать на английском

Поделиться через


Type.AssemblyQualifiedName Свойство

Определение

Возвращает имя типа с указанием сборки, включающее имя сборки, из которой был загружен объект Type.

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

Значение свойства

Имя объекта Type с указанием сборки, включающее имя сборки, из которой был загружен объект Type, или значение null, если текущий экземпляр представляет параметр универсального типа.

Реализации

Примеры

В следующем примере отображается имя сборки, связанной с классом , и полное имя типа.

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 , и Nameсвойствами , FullNameи AssemblyQualifiedName .

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 свойства .

Примечание

Архитектура процессора является частью удостоверения сборки и может быть указана как часть строк имени сборки. Например, "ProcessorArchitecture=msil". Однако он не включается в строку, возвращаемую свойством AssemblyQualifiedName , из соображений совместимости. См. раздел AssemblyName.ProcessorArchitecture.

Все компиляторы, поддерживающие среду CLR, выдают простое имя вложенного класса, а отражение создает искаженное имя при запросе в соответствии со следующими соглашениями.

Разделитель Значение
Обратная косая черта (\) Escape-символ.
Запятая (,) Предшествует имени сборки.
Знак "плюс" (+) Предшествует вложенному классу.
Точка (.) Обозначает идентификаторы пространств имен.
Квадратные скобки ([]) После имени типа обозначает массив этого типа.

-или-

Для универсального типа заключает список аргументов универсального типа.

-или-

В списке аргументов типа содержит тип, квалифицированные сборкой.

Например, имя класса с указанием сборки может выглядеть следующим образом:

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

Если пространство имен содержит знак "плюс", например TopNamespace.Sub+Namespace, то знаку "плюс" (+) будет предшествовать escape-символ (\), чтобы он не интерпретировался как вложенный разделитель. Отражение выпустит эту строку следующим образом:

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

"++" становится "\+\+", а "\" — "\".

Это полное имя можно сохранить, а затем использовать для загрузки Type. Для поиска и загрузки Typeиспользуйте GetType либо только имя типа, либо полное имя типа сборки. GetType с именем типа будет искать Type только в сборке вызывающего объекта, а затем в системной сборке. GetType с полным именем типа сборки будет искать в любой сборке Type .

Имена типов могут содержать конечные символы, обозначающие дополнительные сведения о типе, например, является ли тип ссылочным, типом указателя или типом массива. Чтобы получить имя типа без этих конечных символов, используйте t.GetElementType().ToString(), где t — это тип.

Пробелы относятся ко всем компонентам имен типов, кроме имени сборки. В имени сборки пробелы перед разделителем "," являются релевантными, но пробелы после разделителя "," игнорируются.

Универсальные аргументы универсальных типов сами по себе квалифицируются по имени сборки. Например, в имени типа с указанием сборки для MyGenericClass<int> (MyGenericClass(Of Integer) в Visual Basic) int разворачивается до имени типа с указанием сборки для Int32.

Если текущий Type объект представляет универсальный параметр, это свойство возвращает null.

Применяется к

Продукт Версии

См. также раздел