MetadataLoadContext.CoreAssembly MetadataLoadContext.CoreAssembly MetadataLoadContext.CoreAssembly MetadataLoadContext.CoreAssembly Property


Int32 などの既知の型を格納する「システム アセンブリ」を示すアセンブリを取得または設定します。Gets or sets the assembly that denotes the "system assembly" that houses the well-known types such as Int32.

 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


Assembly インスタンス。An Assembly instance.


これらの既知の型への参照に、通常の型とは異なり、アセンブリ参照が含まれていないために、他のアセンブリとは異なるコア アセンブリが扱われます。The core assembly is treated differently than other assemblies because references to these well-known types do not include the assembly reference, unlike normal types.

通常、このアセンブリが名前付き"mscorlib"または"netstandard"。Typically, this assembly is named "mscorlib" or "netstandard". コア アセンブリが見つからない場合、値になりますnullメソッドのシグネチャを解析するものも含め、その他の多くのリフレクション メソッドは例外をスローします。If the core assembly cannot be found, the value will be null, and many other reflection methods, including those that parse method signatures, will throw an exception.

CoreAssemblyを渡すことによって決定されますが、coreAssemblyNameに渡されるパラメーター、MetadataAssemblyResolverコンス トラクターをMetadataAssemblyResolver.Resolveメソッド。The CoreAssembly is determined by passing the coreAssemblyName parameter passed to the MetadataAssemblyResolver constructor to the MetadataAssemblyResolver.Resolve method.

ない場合はcoreAssemblyNameのコンス トラクターの引数が指定されましたMetadataLoadContext、"mscorlib"、"System.Runtime"および"netstandard"を含む、既定値が使用されます。If no coreAssemblyName argument was specified in the constructor of MetadataLoadContext, then default values are used, including "mscorlib", "System.Runtime" and "netstandard".

指定されたコア アセンブリは主要な型を直接格納する必要はありません。The designated core assembly does not need to contain the core types directly. 入力が他のアセンブリに転送します。It can type forward them to other assemblies. そのため、完全に指定されたコア アセンブリと mscorlib ファサードを使用して許容されます。Thus, it is perfectly permissible to use the mscorlib facade as the designated core assembly.

なおSystem.Runtimeなど、相互運用機能に関連する擬似的なカスタム属性の型のいくつか除外するため、理想的なコア アセンブリでないDllImportAttributeします。Note that System.Runtime is not an ideal core assembly because it excludes some of the interop-related pseudo-custom attribute types such as DllImportAttribute. ただし、これらの属性に関心がない場合に役立ちます。However, it can serve if you have no interest in those attributes. [Customattributes] API には、コア アセンブリに必要な型が含まれていない場合にこれらの属性はスキップします。The CustomAttributes API will skip those attributes if the core assembly does not include the necessary types.

コア アセンブリが必要になるまで読み込まれません。The core assembly is not loaded until necessary. 次の Api では、コア アセンブリの検索はトリガーされません。The following APIs do not trigger the search for the core assembly:

コア アセンブリが見つからないか、コア アセンブリには、型がないの動作に影響する場合、MetadataLoadContext次のようにします。If a core assembly cannot be found or if the core assembly is missing types, this will affect the behavior of the MetadataLoadContext as follows:

  • Api を署名または typespecs を解析し、結果として返す必要があるTypeオブジェクトは例外をスローします。APIs that need to parse signatures or typespecs and return the results as Type objects will throw an exception. 次に例を示します。For example:

  • よく知られている中核となる型に型を比較する必要がある Api は、例外をスローしないと、比較が評価されますfalseします。APIs that need to compare types to well-known core types will not throw an exception, and the comparison will evaluate to false. コア アセンブリを指定しない場合などIsPrimitive戻りますfalseという名前の型をも、すべてのInt32します。For example, if you do not specify a core assembly, IsPrimitive will return false for everything, even types named Int32. 同様に、Type.GetTypeCode戻りますObjectのすべてのものです。Similarly, Type.GetTypeCode will return Object for everything.

  • メタデータ エンティティは、擬似的なカスタム属性としてフラグにその画面を設定、擬似的なカスタム属性の型、必要なコンス トラクターまたはコンス トラクターのパラメーターの型のいずれかのコア アセンブリを含んでいない場合、MetadataLoadContextはスローされません。If a metadata entity sets flags that surface as a pseudo-custom attribute, and the core assembly does not contain the pseudo-custom attribute type, the necessary constructor or any of the parameter types of the constructor, the MetadataLoadContext will not throw. 返される属性の一覧から擬似的なカスタム属性が省略されます。It will omit the pseudo-custom attribute from the list of returned attributes.