Anda sebaiknya menerima bahwa pengguna Anda harus mereferensikan Majelis Anda dan yang mendukungnya.
Ya, Anda mungkin bisa mulai bekerja, sehingga rakitan pendukung dimasukkan secara keseluruhan ke dalam rakitan Anda sendiri. Namun hal ini sepenuhnya mengikat jadwal rilis rakitan Anda dengan jadwal rilis rakitan pendukung. Tidak mungkin rakitan pendukung diperbarui untuk digunakan dengan rakitan Anda tanpa merilis ulang rakitan Anda juga.
Ada juga pertanyaan tentang hak cipta dan lisensi. Jika Anda juga menulis majelis pendukung, saya rasa Anda tidak akan mengalami kesulitan sama sekali. Namun sebaliknya, menggabungkan majelis pendukung dengan majelis Anda mungkin paling tidak tidak disukai oleh pembuat majelis tersebut, atau bahkan dilarang sama sekali.
Opsi buruk lainnya mungkin adalah mengembalikan objek dynamic
dari API Majelis Anda alih-alih tipe yang dideklarasikan dalam Majelis pendukung. Hal ini tentu saja akan memiliki kemungkinan dampak kinerja, dan juga akan meniadakan kemungkinan keamanan tipe waktu kompilasi yang seharusnya menjadi manfaat normal menggunakan bahasa seperti C#. Tapi itu bisa dilakukan.
Jika Anda benar-benar tidak tahan dengan gagasan pengguna menambahkan referensi ke perpustakaan pendukung, opsi yang masuk akal dari sudut pandang rekayasa perangkat lunak adalah mengubah API Majelis Anda sehingga tidak mengembalikan tipe dari perpustakaan pendukung. Mereka masih memerlukan Majelis itu pada saat run-time jika Anda menggunakannya, tetapi setidaknya kode pengguna tidak memerlukan referensi eksplisit. Sebaliknya, API Anda akan mengembalikan tipe yang dideklarasikan oleh Majelis Anda sendiri dan yang menggabungkan tipe Majelis pendukung, mungkin memodifikasi antarmuka tipe tersebut (menghapus anggota yang tidak diperlukan, menambahkan ekstensi baru, dll.) agar lebih sesuai dengan kebutuhan pengguna Anda. Dengan begitu tipe rakitan pendukung disembunyikan dari pandangan sehingga tidak memerlukan referensi eksplisit oleh rakitan pengguna Anda.
IMHO perlu diperhatikan bahwa pengguna Anda sudah mereferensikan banyak rakitan lain tempat rakitan Anda bergantung, yaitu jika tidak ada yang lain, setidaknya berbagai rakitan .NET. Memang benar, banyak di antaranya yang diperlukan agar kode .NET dapat berfungsi sehingga proyek pengguna sudah memiliki referensi ini, namun referensi tersebut masih mewakili referensi perakitan tambahan. Rakitan .NET non-default lainnya mungkin diperlukan atau tidak, bergantung pada apa lagi yang digunakan rakitan Anda dan dikembalikan ke kode pengguna. Bagaimanapun juga, hal semacam ini cukup umum dan bukan sesuatu yang harus menghabiskan banyak waktu untuk menghindarinya.
Sekali lagi, faktanya adalah bahwa perakitan pendukung akan diperlukan pada saat run-time. Jadi sepertinya tidak terlalu sulit untuk meminta perakitan tersebut direferensikan oleh proyek pengguna sendiri. Rakitan referensi yang mendeklarasikan tipe kodenya sendiri bergantung pada cara kerja .NET. Mengapa melawannya? Masalah menarik apa yang mungkin dapat memotivasi upaya nyata untuk menghindari referensi tambahan dari proyek pengguna?
person
Peter Duniho
schedule
14.04.2016
B
(seperti pada: dengan cara yang aman untuk tipe), maka dia sebenarnya tidak memerlukan referensiExtLib
- person Jcl   schedule 13.04.2016B
, tapi itu tidak masuk akal jika tujuannya adalah untuk menghindari referensi (referensi yang dimiliki oleh perpustakaan utama) - person Jcl   schedule 13.04.2016