Udostępnij za pośrednictwem


MetadataLoadContext.CoreAssembly Właściwość

Definicja

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ć nullwartość , 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:

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óci false 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.

Dotyczy