Bagikan melalui


MetadataLoadContext.CoreAssembly Properti

Definisi

Mendapatkan atau mengatur assembly yang menunjukkan "perakitan sistem" yang menampung jenis terkenal seperti 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

Nilai Properti

Instans Assembly .

Keterangan

Perakitan inti diperlakukan secara berbeda dari rakitan lainnya karena referensi ke jenis terkenal ini tidak termasuk referensi perakitan, tidak seperti jenis normal.

Biasanya, rakitan ini diberi nama "mscorlib" atau "netstandard". Jika rakitan inti tidak dapat ditemukan, nilainya akan menjadi null, dan banyak metode pantulan lainnya, termasuk yang mengurai tanda tangan metode, akan memberikan pengecualian.

CoreAssembly ditentukan dengan meneruskan parameter yang coreAssemblyName diteruskan ke MetadataAssemblyResolver konstruktor ke MetadataAssemblyResolver.Resolve metode .

Jika tidak ada coreAssemblyName argumen yang ditentukan dalam konstruktor MetadataLoadContext, maka nilai default digunakan, termasuk "mscorlib", "System.Runtime" dan "netstandard".

Rakitan inti yang ditunjuk tidak perlu berisi jenis inti secara langsung. Ini dapat mengetikkan mereka ke rakitan lain. Dengan demikian, sangat diizinkan untuk menggunakan fasad mscorlib sebagai perakitan inti yang ditunjuk.

Perhatikan bahwa System.Runtime bukan rakitan inti yang ideal karena tidak termasuk beberapa jenis atribut pseudo-custom terkait interop seperti DllImportAttribute. Namun, ini dapat berfungsi jika Anda tidak tertarik dengan atribut tersebut. API CustomAttributes akan melewati atribut tersebut jika perakitan inti tidak menyertakan jenis yang diperlukan.

Rakitan inti tidak dimuat sampai diperlukan. API berikut tidak memicu pencarian untuk perakitan inti:

Jika rakitan inti tidak dapat ditemukan atau jika rakitan inti hilang, ini akan memengaruhi perilaku MetadataLoadContext sebagai berikut:

  • API yang perlu mengurai tanda tangan atau typepecs dan mengembalikan hasilnya karena Type objek akan memberikan pengecualian. Contohnya:

  • API yang perlu membandingkan jenis dengan jenis inti terkenal tidak akan memberikan pengecualian, dan perbandingan akan mengevaluasi ke false. Misalnya, jika Anda tidak menentukan assembly inti, IsPrimitive akan kembali false untuk semuanya, bahkan jenis bernama Int32. Demikian pula, Type.GetTypeCode akan kembali Object untuk semuanya.

  • Jika entitas metadata menetapkan bendera yang muncul sebagai atribut pseudo-custom, dan rakitan inti tidak berisi jenis atribut pseudo-custom, konstruktor yang diperlukan atau salah satu jenis parameter konstruktor, MetadataLoadContext tidak akan dilemparkan. Ini akan menghilangkan atribut pseudo-custom dari daftar atribut yang dikembalikan.

Berlaku untuk