Apakah mungkin untuk memiliki dua bagian (namespace yang sama, nama kelas yang sama) ke kelas parsial dalam DLL terpisah?
c#
dll
partial-classes
Brad
sumber
sumber
Jawaban:
Dari MSDN -Kelas dan Metode Darurat :
sumber
Tidak. Kelas parsial adalah fitur bahasa murni. Saat perakitan dikompilasi, file-file tersebut digabungkan untuk membuat tipe. Tidak mungkin untuk menyebar file ke majelis yang berbeda.
Bergantung pada apa yang ingin Anda lakukan, Anda mungkin dapat menggunakan metode ekstensi untuk mencapai apa yang Anda butuhkan.
sumber
Tidak itu tidak mungkin. Ketika perakitan dikompilasi, kelas harus diselesaikan.
sumber
Sementara jawaban lain memberikan "Tidak" yang tidak menyenangkan bahwa siapa pun yang mendarat di halaman ini tidak ingin melihat atau mendengar, saya dikejutkan oleh pemikiran lain yang belum disebutkan di sini. Jika kelas parsial diizinkan di seluruh majelis, seseorang akan mendapatkan akses ke anggota pribadi dari jenis yang ada yang tidak ditulis olehnya, sehingga memungkinkannya untuk memanipulasi mereka dengan cara yang tidak dimaksudkan oleh penulis asli, sehingga membahayakan fungsionalitas semua kelas yang mewarisi terlalu.
Tidak hanya itu, kelas-kelas di majelis lain (dan anak-anak mereka) perlu dikompilasi ulang untuk membuatnya bekerja. Dengan demikian secara logis tidak mungkin untuk memungkinkan pemisahan kelas pada majelis yang berbeda.
sumber
Anda dapat menggunakan metode ekstensi ketika Anda ingin menambahkan metode ke kelas di dll yang berbeda. Satu kelemahan dari metode ini adalah Anda tidak dapat menambahkan metode statis.
sumber
Pertanyaannya adalah mengapa Anda ingin membuat kelas parsial di majelis lain? Anda dapat mendefinisikan kelas dan antarmuka abstrak di seluruh majelis, mungkin Anda perlu melihatnya.
sumber
Anda mungkin hanya ingin membuat kelas Wrapper di perpustakaan Anda sendiri, sekitar kelas di perpustakaan bagian ke-3. Kemudian tambahkan fungsionalitas apa pun ke kelas pembungkus.
sumber