[英]How to verify if FTP supports or requires SSL connection with FtpWebRequest in C#
[英]C# - How to write an object that requires a DB connection
我是C#(winforms)創建對象的新手,需要知道最好的方法。 我有一個簡單的對象,它將從我們的數據庫中返回一些數據。 通常情況下,我會將DS字符串(已編碼)放入對象中並完成,但我發現的問題是,這並不能使對象真正“移動”以便能夠在我們的任何應用程序中使用(網或窗口)。 那么,最好是在構造函數中創建一個需要編碼的db字符串的對象,或者我應該怎么做呢?
這就是我的想法:
public class foo
{
public foo(string EncodedConnectionString)
{
_EncodedConnectionString = EncodedConnectionString;
}
private string _EncodedConnectionString { get; set; }
private DataSet GetFooFromDB()
{
oDatabase = new SQLDataBase(
EncodedConnectionString, 15);
//remaining code omitted...
}
}
想法,評論?
我在你的代碼中改變的是:
public class foo
{
private SQLDataBase _sqlDataBase;
public foo(SQLDataBase sqlDataBase)
{
_sqlDataBase = sqlDataBase;
}
}
現在,您可以使用依賴注入來測試代碼。 連接字符串是外部添加的,因此您可以更改數據庫而無需重新編寫/重寫大量代碼。
實際上,在持久性方面,對象本身應該是不可知的。 我的意思是,對象既不應該關心,也不應該知道它們是如何被存儲/加載的。
有多種方法可以實現持久性。 一種方法是使用DAL(數據訪問層),它知道如何加載和存儲與對象關聯的數據。 但請記住,即使是DAL也不會對連接字符串進行硬編碼,而是應該根據需要將其從配置文件中提取出來。
這里有一個簡單的例子: http : //www.radsoftware.com.au/articles/dataaccesslayerdesign1.aspx就個人而言,我不同意這方面的一切,但這是了解它們的一個很好的起點。
有關更高級的閱讀,請查看實體框架http://msdn.microsoft.com/en-us/library/bb399572.aspx
另一種方法是使用控制反轉和依賴注入。 我們的想法是你的對象將擁有Save()
和Load()
方法,這些方法接受了執行實際持久性的某種類型的接口。 http://msdn.microsoft.com/en-us/library/aa973811.aspx
這樣做有點復雜,但需要支付股息,並可根據需要靈活地更換存儲庫。 這意味着支持多個數據庫后端甚至將對象存儲在csv / xml文件中要簡單得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.