Kann eine Baugruppe, die eine nicht CLS-kompatible Referenz enthält, CLS-kompatibel sein?

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

  •  12-11-2019
  •  | 
  •  

Frage

Ich habe eine vorhandene DLL, die nicht CLS-kompatibel ist und auf die ich aus meinem eigenen Projekt verweise.Wenn ich meine Assembly als CLS-kompatibel markiere, erhalte ich Compiler-Warnungen, dass Namen in der referenzierten Assembly nicht CLS-kompatibel sind.

Gibt es eine Möglichkeit, meine Baugruppe CLS-konform zu halten und die referenzierte als nicht zu markieren?

War es hilfreich?

Lösung

Ja, Ihre DLL kann CLS-kompatibel sein, solange sie keine nicht CLS-kompatiblen Mitglieder aus der referenzierten Assembly verfügbar macht - das heißt, sie werden in keinem ihrer eigenen öffentlichen oder geschützten Mitglieder erwähnt oder Typen.(Es kann sie weiterhin in privaten und internen Mitgliedern und Typen verwenden.)

Wenn Ihre DLL Typen direkt aus der nicht kompatiblen DLL verfügbar machen muss, können Sie entweder versuchen, diese Typen in Ihre eigenen Wrapper zu kapseln (z.eine Methode könnte eine zurückgeben MyWrapperAroundNaughtyType anstelle eines NaughtyType), oder Sie können die relevanten Mitglieder Ihrer API markieren CLSCompliant(false) um nur diese Mitglieder von der Compiler-Überprüfung auszuschließen.

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