Why is my function not CLS-compliant?
Asked Answered
A

1

15

I'm getting the following warning message...

Return type of function 'ConnectionNew' is not CLS-compliant.

...for this function:

Public Function ConnectionNew(ByVal DataBaseName As String) As MySqlConnection
      Dim connection As MySqlConnection = Nothing
      connection = getConnection(DataBaseName())
      Return connection
End Function

What does this message mean, and how can I fix it?

Austin answered 15/8, 2011 at 12:53 Comment(3)
What is MySqlConnection? Where is it defined? The error indicates that is the problem.Billingsgate
MySqlConnection is a member of MySql.Data.MySqlClient. Am I not allowed to use that?Austin
Of course you are allowed. But it is not an assembly that is CLS compliant. And as such, the only thing you can do is follow the answer from @Hans.Billingsgate
V
32

It is because you are returning an object of a type that's not CLS compliant. Nothing you can do about that, you didn't write the type. Just acknowledge that you know that it isn't compliant, it isn't otherwise likely to cause any problems. Unless you use the function in another language that doesn't support all the .NET types. Fix:

<CLSCompliant(False)> _
Public Function ConnectionNew(ByVal DataBaseName As String) As MySqlConnection
   '' etc...
End Function
Viyella answered 15/8, 2011 at 13:9 Comment(2)
Is that underscore deliberate, or a typo? Never mind, I see in a StructLayout "decoration" that it has the space and underscore appended, too, so it is now obvious to me that it was no typo.Mcchesney
The underscore signifies a line continuation in VB, as if you'd written <CLSCompliant(False)> Public Function ConnectionNew ... (sorry to necromance)Hudis

© 2022 - 2024 — McMap. All rights reserved.