私は CLS 準拠のプロジェクトを持っていますが、修正方法を混乱させる 1 つの変数宣言を除きます。
MySQL というクラスがあり、要約すると次のようになります。
public class mysql
 implements idisposable
 private connection as new mysqlconnection
 private command as new mysqlcommand
 <CLSCompliant(false)> public reader as mysqldatareader
 public sub new(byval query as string)
  if connection.state = connectionstate.open then
    connection.connectionstring = my.settings.connectionstring
    connection.open()
    command.connection = connection
    command.commandtext = query
 end sub
 public sub parameters(byval name as string, byval value as string)
  command.parameters.addwithvalue(name, value)
 end sub
 public sub retrieve()
  reader = command.executereader()
 end sub
 public sub send()
  command.executenonquery()
 end sub
 public sub close()
  if me.command.connection.state = connectionstate.open then me.command.connection.close
  if me.connection.state = connectionstate.open then me.connection.close
  me.dispose()
 end sub
 #region "IDisposable support"
  private disposedvalue as boolean
   protected overridable sub dispose(disposing as boolean)
     if not me.disposedbalue then
       if disposing then
       #dispose maaged state
       end if
       connection.dispose()
       command.dispose()
       reader = nothing
      end if
      me.disposedvalue = true
   end sub
  public sub dispose() implement idisposable.dispose
    dispose(true)
    gc.suppressfinalize(me)
  end sub
 #end region
end class
利用方法:
dim sql as new MySQL("SELECT * FROM TABLE WHERE NAME = ?Name")
sql.parameters("?Name", me.textboxusername.text)
call sql.retrieve()
while sql.reader.read
  text = sql.reader.getstring(sql.readergetordinal("User_Name")
end while
call sql.close()
MySQLDataReader は CLS に準拠していないため、パブリック リーダーであり、問題を修正する方法がわかりません。最新の mysql データ コネクタ バージョンにアップグレードしました。私はそれをプライベート変数にして、関数をスローした結果を読むべきかどうか疑問に思っていますか?
次のコード スニペットは、リモート デスクトップ接続から表示しながら入力しました。