Вот конкретный пример, который не является CLS-жалобы в соответствии с VS.NET 2005.Каковы более сложные правила, необходимые для того, чтобы ваш код стал жалобой CLS?
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
Это интерфейс ввода реализовать с помощью классов, таких как DbId32, DbId64, DbIdString и т.д. Это способ абстрактный тип первичного ключа базы данных в один общий тип .Net.
То, что я не показываю, является фабричным методом, который задает правильный конкретный тип (например, новый DbId32 для типа SQL Server «int», например), учитывая собственный тип базы данных.
Теперь, скажем, я иду, чтобы использовать этот интерфейс, например, так:
Public MustOverride ReadOnly Property ID() As IDbId
VS Теперь выводит это предупреждение:
Возврат тип функции «ID» не CLS-жалобы.
Я могу остановить эти предупреждения путем добавления этого атрибута к моему интерфейса следующим образом:
<CLSCompliant(True)> _
Public Interface IDbId
...
Ни одна из функций Этот интерфейс определяет, как представляется, нарушают правила документированы here. Итак, почему VS отображает эти предупреждения?
Вау, хорошие ответы все. Я дам все эти предложения попробовать. – 2008-12-02 00:48:41