Frage

Hier ist ein konkretes Beispiel, die nach VS.NET 2005 nicht CLS-Beschwerde ist.

Public Interface IDbId

    Function GetNativeObject() As Object
    Function Equals(ByVal compObj As IDbId) As Boolean
    Function CompareTo(ByVal compObj As IDbId) As Integer
    Function ToString() As String

End Interface

Dies ist eine Schnittstelle I mit Klassen implementieren, wie DbId32, DbId64, DbIdString, etc. Es ist eine Möglichkeit, zu abstrahieren dem native Datenbank Primärschlüssel Typ in einen gemeinsamen .NET-Typen.

Was ich nicht die Anzeige ist die Factory-Methode, die (für einen SQL Server-Typen ‚int‘, also beispielsweise neue DbId32) gegeben ein native Datenbanktyp des richtigen Betontyp instanziiert.

Lassen Sie uns jetzt sagen, dass ich wie so diese Schnittstelle verwenden gehen:

Public MustOverride ReadOnly Property ID() As IDbId

VS jetzt gibt diese Warnmeldung:

  

Rückgabetyp der Funktion 'ID' ist nicht CLS-Beschwerde.

ich diese Warnungen stoppen kann durch Hinzufügen dieses Attribut auf meine Schnittstelle wie folgt:

<CLSCompliant(True)> _
  Public Interface IDbId
  ...

Keine der Funktionen Diese Schnittstelle definiert scheinen die Regeln dokumentiert hier . Also, warum ist diese Warnungen VS angezeigt wird?

War es hilfreich?

Lösung

Ich denke, es ist an dem Mustoverride Stichwort Modifikator in Ihrem Beispiel fällig. Check this out: Nicht-CLS-kompatibel ‚Mustoverride‘ Mitglied ist nicht in einer CLS-konformen Klasse erlaubt

Andere Tipps

Ich betreiben FXCop und das scheint immer darauf hinweisen, was es dauert eine dll CLS-konform

machen

NET Reflector Verwenden Sie einen Blick auf den generierten Code nehmen sowohl mit als auch ohne das Attribut, und sehen, ob es einen Unterschied ist.

Wenn ja, und es erklärt nicht offensichtlich die Unterschiede (dh, wenn der einzige Unterschied das CLICompliant Attribut ist), dann wird Ihre Fragen mit den Ergebnissen ändern, und ich werde Ergebnis wieder ...:)

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