Nedir CLSCompliant
nitelik?
Nedir CLSCompliant
nitelik?
Yanıtlar:
CLSCompliant
Başka bir .NET dili tarafından kullanılabildiğinden emin olmak istediğinizde sınıfları öznitelikle işaretlersiniz .
Bunlar temel kurallardır:
İmzasız türler, sınıfın genel arabiriminin bir parçası olmamalıdır. Bunun anlamı, kamusal alanların işaretsiz türlere sahip olmaması uint
veya ulong
kamusal yöntemlerin işaretsiz türler döndürmemesi, kamusal işleve geçirilen parametrelerin işaretsiz türlere sahip olmamasıdır. Ancak imzasız tipler özel üyelerin bir parçası olabilir.
Gibi Güvensiz tipleri işaretçiler ile kullanılmamalıdır public
üyeleri. Ancak private
üyelerle birlikte kullanılabilir .
Sınıf adları ve üye adları yalnızca durumlarına göre farklılık göstermemelidir. Örneğin MyMethod
ve adında iki yöntemimiz olamaz MYMETHOD
.
Yalnızca özellikler ve yöntemler aşırı yüklenebilir, operatörler aşırı yüklenmemelidir.
Kodunuzun diğer tüketicilerine CLS uyumlu olduğunu söyler ve ayrıca C # derleyicisinin sizin için CLS uyumlu olup olmadığını kontrol etmesini sağlar.
Atıfta bulunulan makale, CLS uyumluluğunun neyi içerdiği hakkında çok daha fazla ayrıntı içermektedir.
Diğer cevaplar doğrudur. Bazı şeyleri açıklığa kavuşturayım - CLS, Ortak Dil Spesifikasyonu anlamına gelir. Bir .NET dilinin uygulaması ve anlaması gereken minimum kurallar ve gerekli dil özellikleri kümesidir. Bu küme, .NET'te türlerin nasıl tanımlandığını tanımlayan ortak tür sisteminin bir alt kümesidir .
CLS uyumlu olmak, CLR'de derlenip çalıştırılabilen herhangi bir dil tarafından tüketilebilecek kod yazabileceğiniz anlamına gelir. Ancak CLS uyumluluğuna gerek yoktur, bu nedenle CLS uyumluluğunun zor veya imkansız olduğu durumlarda esneklik sağlar.
Kodunuzu diğer geliştiriciler tarafından tüketilmek istiyorsanız, API'nız (genel sınıflarınız ve yöntemleriniz) CLS uyumlu olmalıdır. Derlemelerinize CLSCompliantAttribute ekleyerek bunu bildirmelisiniz. Başkaları için yazmıyorsanız, FxCop ( Framework Cop) benimle aynı fikirde olmasa da CLS uyumluluğu gerekli değildir .
Derlemeniz CLSCompliantAttribute ile işaretlendiğinde, derleyici, derlendiğinde CLS kurallarından herhangi birini ( ocdecio'nun bahsettiği) ihlal edip etmediğini ve düzeltmek için ihlalleri bildirip bildirmeyeceğini görmek için kodunuzu kontrol etmelidir (yapmalıdır!) .
out
parametreler gibi CLSCompliant özelliklerini destekleme konusunda hiçbir sorunu olmadığı göz önüne alındığında CLSCompliance'ı tamamlamanın faydaları - bu yüzden Microsoft'un CLS gereksinimlerini tekrar gözden geçirmesi ve belki de gevşetmesi gerektiğini düşünüyorum.
Buraya sığdığı gibi: CLS uyumlu bir projenin tamamını işaretlemek için bu satırı ekleyin AssemblyInfo.cs
(Solution Explorer'da Özellikler altında bulunabilir)
[assembly:CLSCompliant(true)]
veya eşdeğer olarak VB.NET'te ( AssemblyInfo.vb
Projem altında gizlidir)
<Assembly: CLSCompliant(True)>
Kodunuzu CLS Uyumlu Yaptığınız için Teşekkürler .