MetadataLoadContext.CoreAssembly Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 null
hodnota 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í:
- 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
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í sefalse
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ů.