Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengakses Kelas Dalaman daripada Perhimpunan Luaran Tanpa Mengubah Suai Perhimpunan Penjual?

Bagaimanakah Saya Boleh Mengakses Kelas Dalaman daripada Perhimpunan Luaran Tanpa Mengubah Suai Perhimpunan Penjual?

DDD
DDDasal
2024-12-25 05:44:21788semak imbas

How Can I Access Internal Classes from an External Assembly Without Modifying the Vendor Assembly?

Mengakses Kelas Dalaman daripada Perhimpunan Luaran

Dalam senario di mana pemasangan luaran memerlukan akses kepada objek jenis dalaman dalam pembekal yang dibekalkan oleh vendor perhimpunan, kesusahan timbul. Artikel ini meneroka cara untuk mengatasi cabaran ini tanpa mengubah suai pemasangan vendor.

Dilema

Pertimbangkan senario berikut: pemasangan luaran mengandungi objek yang dikembalikan melalui kaedah dalam perhimpunan vendor. Walau bagaimanapun, objek ini sebenarnya adalah contoh kelas dalaman yang medan dan kaedahnya tidak boleh diakses daripada perhimpunan luaran.

// Vendor assembly
public class Vendor
{
    private InternalClass _internal;
    public object Tag { get { return _internal; } }
}

// External assembly
public class MyClass
{
    public void AccessTest()
    {
        Vendor vendor = new Vendor();
        object value = vendor.Tag;
        // Here we want to access InternalClass.test
    }
}

A Penyelesaian: InternalsVisibleTo Attribute

Oleh lalai, ahli dalaman hanya boleh diakses dalam perhimpunan yang ditakrifkan. Walau bagaimanapun, terdapat pengecualian untuk perhimpunan "rakan".

Untuk memberikan perhimpunan luaran (himpunan "rakan") akses kepada ahli dalaman, tambahkan atribut [assembly: InternalsVisibleTo] pada fail AssemblyInfo.cs bagi pemasangan vendor.

[assembly: InternalsVisibleTo("NameOfFriendAssembly")]

Atribut ini membenarkan pemasangan luaran mengakses ahli dalaman pemasangan vendor seolah-olah mereka dalaman sendiri perhimpunan.

Nota: Penyelesaian ini hanya sesuai untuk tujuan ujian, kerana ia mendedahkan ahli dalaman kepada perhimpunan luaran.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kelas Dalaman daripada Perhimpunan Luaran Tanpa Mengubah Suai Perhimpunan Penjual?. 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