Apa CLSCompliant
atributnya?
sumber
Anda menandai kelas dengan CLSCompliant
atribut ketika Anda ingin memastikan itu dapat digunakan oleh bahasa .NET lainnya.
Ini adalah aturan dasar:
Tipe yang tidak ditandai tidak boleh menjadi bagian dari antarmuka publik kelas. Artinya, bidang publik tidak boleh memiliki tipe unsigned seperti uint
atau ulong
, metode publik tidak boleh mengembalikan tipe unsigned, parameter yang diteruskan ke fungsi publik seharusnya tidak memiliki tipe unsigned. Namun tipe yang tidak ditandatangani dapat menjadi bagian dari anggota pribadi.
Jenis yang tidak aman seperti pointer tidak boleh digunakan dengan public
anggota. Namun mereka dapat digunakan dengan private
anggota.
Nama kelas dan nama anggota tidak boleh berbeda hanya berdasarkan kasusnya. Sebagai contoh, kita tidak dapat memiliki dua metode bernama MyMethod
dan MYMETHOD
.
Hanya properti dan metode yang kelebihan beban, operator tidak boleh kelebihan beban.
Ini memberi tahu konsumen lain tentang kode Anda bahwa itu adalah CLS compliant , dan juga membuat C # compiler memeriksa apakah CLS compliant untuk Anda.
Artikel yang dirujuk berisi lebih banyak detail tentang apa yang menuntut kepatuhan CLS.
sumber
Jawaban lainnya benar. Izinkan saya mengklarifikasi beberapa hal - CLS adalah singkatan dari Common Language Spesifikasi. Ini adalah sekumpulan aturan minimum dan fitur bahasa yang diperlukan yang harus diterapkan dan dipahami oleh bahasa .NET. Set ini adalah subset dari sistem tipe umum , yang mendefinisikan bagaimana tipe didefinisikan dalam .NET.
Menjadi CLS compliant berarti Anda dapat menulis kode yang dapat dikonsumsi oleh bahasa apa pun yang dapat dikompilasi dan dijalankan di CLR. Tetapi kepatuhan CLS tidak diperlukan, memberi Anda fleksibilitas dalam kasus di mana kepatuhan CLS akan sulit atau tidak mungkin dilakukan.
Jika Anda ingin kode Anda dikonsumsi oleh pengembang lain, API Anda (kelas dan metode publik Anda) harus sesuai dengan CLS. Anda harus mendeklarasikan ini dengan menambahkan CLSCompliantAttribute ke majelis Anda. Jika Anda tidak menulis untuk orang lain, kepatuhan CLS tidak diperlukan, meskipun FxCop ( Framework Cop) akan tidak setuju dengan saya.
Ketika perakitan Anda ditandai dengan CLSCompliantAttribute, kompiler akan (harus!) Memeriksa kode Anda untuk melihat apakah, ketika dikompilasi, itu akan melanggar salah satu aturan CLS (beberapa yang disebutkan ocdecio ) dan melaporkan pelanggaran kepada Anda untuk memperbaikinya.
sumber
out
- jadi saya pikir Microsoft perlu meninjau kembali persyaratan CLS dan mungkin melonggarkannya.CLS compliant adalah bagian dari spektrum bahasa lengkap yang diizinkan oleh CLR. Itu membatasi untuk himpunan bagian yang mungkin tersedia oleh sebagian besar bahasa yang menargetkan CLR. Ini meningkat, tetapi tidak menjamin, bahwa perpustakaan Anda dapat digunakan oleh semua bahasa yang menargetkan CLR.
sumber
Sesuai di sini: Untuk menandai seluruh proyek yang memenuhi CLS tambahkan baris ini ke
AssemblyInfo.cs
(dapat ditemukan di bawah Properties di Solution Explorer)atau setara di VB.NET (
AssemblyInfo.vb
disembunyikan di bawah Proyek Saya)Berkat Membuat Kode Anda Sesuai CLS .
sumber