Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengakses Kelas Dalaman daripada Perhimpunan Luar dalam C#?

Bagaimanakah Saya Boleh Mengakses Kelas Dalaman daripada Perhimpunan Luar dalam C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-01 09:13:10990semak imbas

How Can I Access Internal Classes from External Assemblies in C#?

Mengakses Kelas Dalaman daripada Perhimpunan Luar

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.

Penyelesaian: InternalsVisibleTo

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.

Penggunaan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn