Pertanyaan Urutan perakitan dalam .net c #


Pertanyaan serupa telah ditanyakan Memesan permintaan refleksi di dotnet Tapi saya berharap untuk jawaban yang berbeda ... Saya sedang menulis sebuah plugin untuk program yang menggunakan refleksi untuk menginterogasi plugin untuk menemukan titik masuk. Sayangnya ini memiliki bug yang berarti jika menemukan deklarasi antarmuka selama proses ini crash dengan pengecualian yang tidak tertangani. Saya telah berbicara dengan tim pengembangan dan ini tidak mungkin diperbaiki. Ini sangat membatasi bagi saya karena alasan yang jelas. Satu solusi yang sudah saya pikirkan adalah membuat perakitan saya memuat perakitan lain dengan antarmuka di dalamnya, tetapi untuk alasan saya tidak akan masuk ke ini bukan solusi yang bagus. Itu beberapa saat sebelum saya mengalami masalah ini karena untuk beberapa alasan kelas entri saya selalu mendahului antarmuka saya dalam rangka enumerasi refleksi.

Pertanyaan saya adalah, adakah cara untuk mempengaruhi pengurutan kelas dan antarmuka di majelis?

Catatan: Saya sudah mencoba mengatur tingkat aksesibilitas yang berbeda pada antarmuka saya tetapi itu tidak bekerja untuk saya. Tepuk tangan, J


4
2018-01-31 08:00


asal


Jawaban:


Saya berani bertaruh kode menggunakan AppDomain.GetAssemblies() yang kemudian diperiksa. Implementasi dari AppDomain.GetAssemblies() mengarah ke metode eksternal, jadi Reflektor sebagian besar tidak membantu di sini.

Namun, tanpa benar-benar mencobanya dan memeriksa hasilnya, ada dua pilihan logis untuk pemesanan majelis dalam hasil:

  1. Muat pesanan
  2. Sesuai abjad

Dalam kasus pertama Anda mungkin harus mengatur referensi di antara rakitan Anda dan urutan pemuatan sedemikian rupa sehingga kode asing menemukan rakitan yang tepat dengan kelas entri dan berhenti. Dalam kasus kedua, akan menjadi masalah murni penamaan majelis dengan cara yang 'benar' tetapi saya meragukan itu adalah kasus ini.

(Namun, urutannya mungkin benar-benar berbeda dari keduanya di atas, misalnya 'sebagian besar' acak juga.)

Dalam kedua kasus saya pikir cepat atau lambat kode buggy akan menghadapi perakitan bermasalah dan crash pula. Jadi rekomendasi kuatnya adalah: bersikeras memiliki bug diperbaiki.


2
2018-01-31 08:19