好用的 GetProperties (肆) - 總結 (完)

摘要:好用的 GetProperties (肆) - 總結 (完)

這一系列,雖然重點是在講 GetProperties ,但,卻可以透過它來節省很多重工的部分

CustomerProduct的屬性透過一些規則上的設計(例如:XXX_GetXXX_Where)可以指定目前這個屬性的作用為何

也因為有這樣的規則存在,讓原本都要另外寫的功能(如:新增(Insert)、修改(Update)、刪除(Delete)、查詢(Select))可以一併處理

再透過擴充方法,讓這些Domain Object皆有這些功能,對我來說,省了很多事

程式碼參考如下:


Product objPro = new Product();
objPro.ProductName_Get = true;
objPro.ProductName = "產品名稱";
objPro.QuantityPerUnit_Get = true;
objPro.QuantityPerUnit = "每單位數量";
objPro.UnitPrice_Get = true;
objPro.UnitPrice = decimal.Parse("111.0");
objPro.Discontinued_Get = true;
objPro.Discontinued = true;
objPro.SupplierID_Get = true;
objPro.SupplierID = null;
//objPro.GetAllProperties(true);

//新增
nCount = objPro.Insert<Product>();


objPro.ProductName_Get = true;
objPro.ProductName = "修改後產品名稱";
objPro.QuantityPerUnit_Get = true;
objPro.QuantityPerUnit = "修改後每單位數量";
objPro.UnitPrice_Get = true;
objPro.UnitPrice = decimal.Parse("222.0");
objPro.Discontinued_Get = true;
objPro.Discontinued = true;
//objPro.GetAllProperties(true);
objPro.ProductID = 81;
objPro.ProductID_Where = true;
//修改
nCount = objPro.Update<Product>();


objPro.ProductID = 81;
objPro.ProductID_Where = true;

//刪除
nCount = objPro.Delete<Product>();


Customer的處理也是相同,差異只在


nCount = objCust.Insert<customer>();
nCount = objCust.Update<customer>();
nCount = objCust.Delete<customer>();
nCount = objCust.Select<customer>();

最主要是先透過 GetProperties() 來取得該Domain Object裡所有的屬性,再用 GetProperty("Name")取得指定屬性的相關資訊

若該屬性的型態為Nullable<T> (例:int?),可再透過objProperty.PropertyType.GetGenericArguments()來取得T的型態

這樣的設計之後應該還是會視實際情況而有所調整,若各位有更好的建議也歡迎來討論