Dalam senario tertentu, anda mungkin menghadapi situasi di mana perhimpunan yang anda gunakan menyediakan kaedah yang mengembalikan jenis objek, tetapi itu objek sebenarnya tergolong dalam kelas dalaman dalam perhimpunan yang tidak boleh diakses. Ini menimbulkan persoalan tentang cara untuk mengakses medan dan kaedah kelas dalaman itu daripada pemasangan anda sendiri.
Walaupun mengubah suai pemasangan yang dibekalkan vendor tidak menjadi persoalan, terdapat ialah penyelesaian jika anda ingin membenarkan akses pemasangan tertentu kepada ahli dalaman pemasangan vendor untuk tujuan ujian. Ini boleh dicapai menggunakan atribut InternalsVisibleTo.
Dalam fail AssemblyInfo.cs projek anda, tambahkan baris berikut:
[assembly: InternalsVisibleTo("name of assembly here")]
Barisan ini memberikan akses perhimpunan yang ditentukan kepada ahli dalaman perhimpunan anda, termasuk kelas dalaman yang anda cuba akses.
Setelah anda menambah atribut InternalsVisibleTo dan membina semula pemasangan anda, anda boleh mengakses kelas dalaman daripada pemasangan luaran anda seperti berikut:
public class MyClass { public void AccessTest() { Vendor vendor = new Vendor(); object value = vendor.Tag; // Cast the object to the internal class type InternalClass internalClass = (InternalClass)value; // Access the internal member string test = internalClass.test; } }
Nota: Adalah penting untuk memastikan perhimpunan yang anda berikan akses adalah digunakan untuk tujuan ujian sahaja, kerana ia boleh menjejaskan keselamatan aplikasi anda jika digunakan dalam pengeluaran.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kelas Dalaman daripada Perhimpunan Luar dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!