mengakses anggota non publik

pemrograman


Bagaimana kami mengakses anggota non publik?

Saya memiliki objek bernama doseSuggestiions yang memiliki anggota non publik yang disebut “frekuensi”

Saya ingin mengaksesnya.

Tolong bantu saya dalam hal ini

Solusi 1

Pada dasarnya, kami memiliki 4 pengubah akses di C#. publik, dilindungi, internal dan swasta. Berikut definisi masing-masing pengubah:

1. itu publik [^] kata kunci adalah pengubah akses untuk tipe dan anggota tipe. Akses publik merupakan tingkat akses yang paling permisif. Tidak ada batasan untuk mengakses anggota publik.

2. itu terlindung[^] kata kuncinya adalah pengubah akses anggota. Anggota yang dilindungi dapat diakses dari dalam kelas di mana ia dideklarasikan, dan dari dalam kelas mana pun yang berasal dari kelas yang mendeklarasikan anggota tersebut.

3. itu intern[^] kata kunci adalah pengubah akses untuk tipe dan anggota tipe. Anggota internal hanya dapat diakses dalam file di Majelis yang sama. Penggunaan akses internal yang umum adalah dalam pengembangan berbasis komponen karena memungkinkan sekelompok komponen untuk bekerja sama secara pribadi tanpa terkena kode aplikasi lainnya. Misalnya, kerangka kerja untuk membangun antarmuka pengguna grafis dapat menyediakan kelas Kontrol dan Formulir yang bekerja sama menggunakan anggota dengan akses internal. Karena anggota ini bersifat internal, mereka tidak terkena kode yang menggunakan kerangka kerja.

4. itu pribadi[^] kata kuncinya adalah pengubah akses anggota. Akses pribadi adalah tingkat akses yang paling tidak permisif. Anggota privat hanya dapat diakses di dalam badan kelas atau struct di mana mereka dideklarasikan

Singkatnya, bergantung pada variabel non-publik, ada tingkat aksesibilitas yang berbeda pada anggota Anda.

Solusi 3

Hanya ada satu cara untuk mengakses anggota non-publik: Refleksi. Masalahnya adalah metode ini kurang dapat didukung. Misalnya, Anda dapat menemukan anggota berdasarkan nama, tetapi jika Anda salah mengetik string atau namanya diubah nanti, pemeriksaan waktu kompilasi tidak akan memperingatkan Anda — Anda tidak akan menemukan anggota tersebut. Anda dapat menemukan semua anggota secara kolektif sebagai susunan anggota polimorf atau secara terpisah semua bidang, semua properti, semua peristiwa, semua metode, semua konstruktor, atau antarmuka yang diimplementasikan. Anda dapat membatasi pencarian berdasarkan anggota publik atau non-publik.

Gunakan metode berikut System.Type: FindInterfaces, GetInterface, GetInterfaces, GetMember, GetMembers, GetMethod, GetMethods, GetProperty, GetProperties, GetEvent, GetEvents, GetConstructorImpl, GetConstructor.

Melihat http://msdn.microsoft.com/en-us/library/system.type.aspx[^].

Untuk menemukan metode non-publik, Anda perlu menggunakan versi “Get...” metode menggunakan System.Reflection.BindingFlags parameter; menggunakan System.Reflection.BindingFlags.NonPublic atau System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public

-SA

Solusi 2

Buat Properti Publik Anda akan dapat mengaksesnya.

Solusi 39

Jawaban sederhananya adalah kebutuhan untuk mengakses private member adalah a kesalahan, cacat desain.

Salah satu strategi yang digunakan untuk mengizinkan berbagai tingkat akses ke metode/status internal Kelas adalah menangani masalah keamanan di tingkat OS (grup, izin, pengguna).

Pikirkan tentang bagaimana login internet dapat mempertahankan hak pengguna dan admin untuk mengubah kode; tentang bagaimana akses ke database aman dengan berbagai tingkat izin baca/tulis.

Strategi lainnya adalah dengan memasukkan beberapa jenis kode keamanan ke dalam konstruktor Kelas: hal itu selalu menimbulkan risiko keamanan.

Jika Anda tidak menulis kodenya, Anda tidak dapat mengubahnya, dll., Anda bisa peretasan kodenya … tugas yang sangat tidak diinginkan.

コメント

タイトルとURLをコピーしました