Frage

Ich bin Anschalten [assembly: System.CLSCompliant (true)] innerhalb der Baugruppen meiner C # Lösung

.

Ich bin jetzt ein paar Warnungen in dem generierten Code für einen Sharepoint-Web-Service zu bekommen.

Dies ist eine der Methoden, die nicht CLS-kompatibel sind:

    /// <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]));
    }

Wie kann ich diese Warnung entfernen?

Danke, Keith

War es hilfreich?

Lösung

würde ich empfehlen Sie Ihre Web-Referenzen in einem separaten Klassenbibliothek Projekt zu platzieren, die nicht gesetzt ist CLS-kompatibel zu sein. Referenz, die Bibliothek von Ihrem Hauptcode.

Andere Tipps

Sie können die nicht-konformen Methoden mit dem [CLSCompliant(false)] Attribute markieren die Warnungen zu vermeiden, aber das scheint die Kennzeichnung Ihre Baugruppen als konform in erster Linie um das Objekt zu besiegen: Vermutlich wollen Sie den Code tatsächlich CLS-kompatibel sein.

Sie den Code einhalten zu machen, müssen Sie aus dem Rückgabetyp der Methode ändern UInt32 . Exposed unsigned-Typen sind nicht CLS-kompatibel.

Sie könnten zurückkehren long / Int64 statt. Der long Typ CLS-kompatibel und wird sicher einen möglichen uint Wert handhaben.

Wenn Sie nicht können, oder wird der generierte Code nicht bearbeitet werden (entweder das Attribut hinzufügen oder den Rückgabetyp ändern), dann denke ich, die einzige Möglichkeit ist, dass Code in eine separate, nicht-konforme Montage zu bewegen < a href = "https://stackoverflow.com/questions/1140716/how-do-i-handle-cls-compliant-within-a-web-reference/1140773#1140773"> wie John schlägt .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top