2017-04-07 81 views
0

我有一個使用MySQL連接的VB.Net程序。
爲了使代碼更清潔,更可重用,我用我所有的功能做了一個類DBManager
我在一個單獨的項目中創建了這個類,我打算在不久的將來從這個類中獲得一個獨立的DLL。
因此,現在我的主程序只需輸入DBManager

DBManager中的函數之一需要MySqlCommand類型的參數。

當然我對DBManager的頂級進口MySql.Data.MySqlClient,但現在我無法從我的主程序訪問類型(或者更好,類)MySqlCommand

可能的解決方法是在我的主程序導入MySql.Data.MySqlClient,但我認爲這不是一個乾淨的解決方案,因爲我導入整個MySQL的命名空間只是使用MySqlCommand作爲參數....

是否有一個更清潔的方法來獲取MySqlCommand在中沒有導入MySql.Data.MySqlClient在主程序中?訪問類的導入類

+0

這不是一種解決方法。這是所需的解決方案。如果該方法需要該類型的參數,則應用程序必須知道該類型存在,唯一的方法是引用聲明該類型的庫。這是沒有辦法的。怎麼樣,而不是期待一個'MySqlCommand',你寫這個方法期望一個包含SQL代碼和參數值的Dictionary的'String',然後在內部構造命令對象?如果你不需要消費應用程序必須知道'MySqlClient',那麼不要暴露該命名空間中的任何類型。 – jmcilhinney

+0

嗨,thaks你jmcilhinney,我已經使用MySqlCommand類型爲了使用方法AddWithValue。我想知道是否可以創建一個類來複制MySqlCommand所做的一切,以便使用此自定義類代替MySqlCommand .....否則我會嘗試使用字符串 –

+0

只需在方法內使用「AddWithValue」。 – jmcilhinney

回答

0

好的,我發現了一個基於jimcilhinney的建議的解決方案。
我做了一個類DBSqlCommand與兩個公共變量:Public CommandText As StringPublic Parameters As SortedList(Of String, String),支持我需要插入參數的add方法。
然後我已將方法的參數類型更改爲DBSqlCommand
現在,當我調用我的方法時,它會在內部處理MySqlCommand,並將列表轉換爲命令參數。