MetadataLoadContext.CoreAssembly Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia zestaw, który określa "zestaw systemowy", który zawiera dobrze znane typy, takie jak Int32.
public:
property System::Reflection::Assembly ^ CoreAssembly { System::Reflection::Assembly ^ get(); };
public System.Reflection.Assembly? CoreAssembly { get; }
member this.CoreAssembly : System.Reflection.Assembly
Public ReadOnly Property CoreAssembly As Assembly
Wartość właściwości
Wystąpienie Assembly .
Uwagi
Podstawowy zestaw jest traktowany inaczej niż inne zestawy, ponieważ odwołania do tych dobrze znanych typów nie zawierają odwołania do zestawu, w przeciwieństwie do typów normalnych.
Zazwyczaj ten zestaw nosi nazwę "mscorlib" lub "netstandard". Jeśli nie można odnaleźć podstawowego zestawu, wartość będzie mieć null
wartość , a wiele innych metod odbicia, w tym tych, które analizują podpisy metody, zgłosi wyjątek.
Element CoreAssembly
jest określany przez przekazanie parametru coreAssemblyName
przekazanego do konstruktora MetadataAssemblyResolverMetadataAssemblyResolver.Resolve do metody .
Jeśli żaden argument nie coreAssemblyName
został określony w konstruktorze klasy MetadataLoadContext, są używane wartości domyślne, w tym "mscorlib", "System.Runtime" i "netstandard".
Wyznaczony zestaw podstawowy nie musi zawierać bezpośrednio typów podstawowych. Może wpisać je dalej do innych zestawów. W związku z tym doskonale dopuszczalne jest użycie fasady mscorlib jako wyznaczonego zestawu podstawowego.
Należy pamiętać, że nie jest to idealny zestaw podstawowy, System.Runtime ponieważ wyklucza niektóre z typów atrybutów pseudo-niestandardowych związanych z międzyoperacyjności, takich jak DllImportAttribute. Może jednak służyć, jeśli nie masz zainteresowania tymi atrybutami. Interfejs API CustomAttributes pominą te atrybuty, jeśli podstawowy zestaw nie zawiera niezbędnych typów.
Podstawowy zestaw nie jest ładowany, dopóki nie będzie to konieczne. Następujące interfejsy API nie wyzwalają wyszukiwania podstawowego zestawu:
- MetadataLoadContext.LoadFromStream
- MetadataLoadContext.LoadFromAssemblyPath
- MetadataLoadContext.LoadFromByteArray
- Assembly.GetName
- Assembly.FullName
- Assembly.GetReferencedAssemblies
- Assembly.GetTypes
- Assembly.DefinedTypes
- Assembly.GetExportedTypes
- Assembly.GetForwardedTypes
- Assembly.GetType(String, Boolean, Boolean)
- Type.Name
- Type.FullName
- Type.AssemblyQualifiedName
Jeśli nie można odnaleźć podstawowego zestawu lub jeśli brakuje podstawowego zestawu, wpłynie to na zachowanie następujących MetadataLoadContext elementów:
Interfejsy API, które muszą analizować podpisy lub typypecs i zwracać wyniki, ponieważ Type obiekty zgłaszają wyjątek. Na przykład:
Interfejsy API, które muszą porównywać typy z dobrze znanymi typami rdzeni, nie będą zgłaszać wyjątku, a porównanie zwróci wartość
false
. Jeśli na przykład nie określisz podstawowego zestawu, IsPrimitive zwrócifalse
wszystko, nawet typy o nazwie Int32. Podobnie, Type.GetTypeCode powróci Object do wszystkiego.Jeśli jednostka metadanych ustawia flagi, które są wyświetlane jako atrybut pseudo-niestandardowy, a podstawowy zestaw nie zawiera pseudo-niestandardowego typu atrybutu, wymagany konstruktor lub którykolwiek z typów parametrów konstruktora, MetadataLoadContext nie zostanie zgłoszony. Spowoduje to pominięcie pseudo-niestandardowego atrybutu z listy zwracanych atrybutów.