كيف يمكنني التعامل مع CLS متوافقة ضمن مرجع ويب؟

StackOverflow https://stackoverflow.com/questions/1140716

  •  16-09-2019
  •  | 
  •  

سؤال

أنا أتحول [الجمعية: system.clscompliant (صحيح)] داخل جمعيات حل C #.

أحصل الآن على بعض التحذيرات داخل التعليمات البرمجية التي تم إنشاؤها لخدمة الويب SharePoint.

فيما يلي أحد الأساليب التي لا توافق CLS:

    /// <remarks/>
    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/sharepoint/soap/GetItem", RequestNamespace="http://schemas.microsoft.com/sharepoint/soap/", ResponseNamespace="http://schemas.microsoft.com/sharepoint/soap/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
    public uint GetItem(string Url, out FieldInformation[] Fields, [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] out byte[] Stream) {
        object[] results = this.Invoke("GetItem", new object[] {
                    Url});
        Fields = ((FieldInformation[])(results[1]));
        Stream = ((byte[])(results[2]));
        return ((uint)(results[0]));
    }

كيف يمكنني إزالة هذا التحذير؟

شكرا لك، كيث

هل كانت مفيدة؟

المحلول

أود أن أوصي بوضع مراجع الويب الخاصة بك في مشروع مكتبة فئة منفصلة لم يتم ضبطها على CLS. مرجع تلك المكتبة من الرمز الرئيسي الخاص بك.

نصائح أخرى

يمكنك تحديد الأساليب غير المتوافقة مع [CLSCompliant(false)] سمة لتجنب التحذيرات، ولكن يبدو أن هذا هو هزيمة كائن بمناسبة التجميعات الخاصة بك كامتثال في المقام الأول: من المفترض أن تكون الرموز متوافقة بالفعل CLS.

لجعل الرمز يتوافق، تحتاج إلى تغيير نوع المرتجع للطريقة من uint/UInt32. وبعد أنواع مكشوفة غير موقعة ليست متوافقة CLS.

يمكنك العودة long/Int64 في حين أن. ال long النوع هو cls متوافق معه وسوف يتعامل بأمان مع أي ممكن uint القيمة.

إذا لم تتمكن، أو لا تقوم، قم بتحرير التعليمات البرمجية التي تم إنشاؤها (إما إضافة السمة أو تغيير نوع الإرجاع)، فما أعتقد أن خيارك الوحيد هو نقل هذا الرمز إلى مجموعة منفصلة غير متوافقة كما يوحنا جون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top