Sdílet prostřednictvím


MetadataLoadContext.CoreAssembly Vlastnost

Definice

Získá nebo nastaví sestavení, které označuje "systémové sestavení", které obsahuje dobře známé typy, jako Int32je .

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

Hodnota vlastnosti

Instance Assembly .

Poznámky

Základní sestavení je zpracováváno jinak než jiná sestavení, protože odkazy na tyto dobře známé typy neobsahují odkaz na sestavení, na rozdíl od normálních typů.

Toto sestavení má obvykle název "mscorlib" nebo "netstandard". Pokud nelze najít základní sestavení, bude nullhodnota a mnoho dalších metod reflexe, včetně těch, které parsují signatury metod, vyvolá výjimku.

Určuje CoreAssembly se předáním parametru coreAssemblyName předaného MetadataAssemblyResolver konstruktoru MetadataAssemblyResolver.Resolve metodě .

Pokud nebyl v konstruktoru MetadataLoadContextzadán žádný coreAssemblyName argument , použijí se výchozí hodnoty, včetně "mscorlib", "System.Runtime" a "netstandard".

Určené sestavení jádra nemusí přímo obsahovat typy jader. Může je přeposílat do jiných sestavení. Proto je zcela přípustné použít fasádu mscorlib jako určenou základní sestavu.

Všimněte si, že System.Runtime není ideální základní sestavení, protože vylučuje některé pseudovlastní typy atributů související s interoperabilitou, například DllImportAttribute. Může však sloužit, pokud nemáte o tyto atributy zájem. Rozhraní API CustomAttributes tyto atributy přeskočí, pokud základní sestavení neobsahuje potřebné typy.

Základní sestavení není načteno, dokud není nutné. Následující rozhraní API neaktivují vyhledávání základního sestavení:

Pokud nelze najít základní sestavení nebo pokud v základním sestavení chybí typy, bude to mít vliv na chování MetadataLoadContext následujícím způsobem:

  • Rozhraní API, která potřebují parsovat signatury nebo typespecs a vracet výsledky jako Type objekty, vyvolají výjimku. Příklad:

  • Rozhraní API, která potřebují porovnávat typy se známými typy jádra, nevyvolají výjimku a porovnání se vyhodnotí jako false. Pokud například nezadáte základní sestavení, IsPrimitive vrátí se false pro všechno, dokonce i typy s názvem Int32. Podobně se Type.GetTypeCode vrátí Object pro všechno.

  • Pokud entita metadat nastaví příznak, který se zobrazí jako pseudovlastní atribut, a základní sestavení neobsahuje pseudovlastní atribut typu, nezbytný konstruktor nebo některý z typů parametrů konstruktoru MetadataLoadContext , nebude vyvolána. Vynechá pseudovlastní atribut ze seznamu vrácených atributů.

Platí pro