我有一個C#方法,我想用來更新一些數據。該方法可以傳遞一個字符串,雙,整數如何編碼C#函數以接受可變數目的參數?
public void Update(string ac, string pr, string fld, Int32 intVal = null, double dblVal = null, string strVal = null)
{
根據FLD的價值我想更新我的表中的某個字段名。
有沒有什麼辦法可以編寫函數參數,所以我不需要提供一長串可能的值類型?
理想情況下,我想能夠調用這個函數是這樣的:
Update("key1", "key2", "location", "London");
Update("key1" , "key2", "beds", 2);
Update("key1" , "key2", "price", 123.45);
然後函數更新裏面我想有:
public void Update(string ac, string pr, xxx, yyy)
{
try
{
vm.Product = _product.Get(ac, pr);
vm.Product.xxx = yyy;
_product.AddOrUpdate(vm.Product);
}
catch (Exception e) { log(e); }
}
在我想XXX至給出字段名稱和yyy的實際值。也許在函數內部,我可以用基於字段名稱的case方法進行某種類型的投射。我只有少量的字段名稱,因此可能很容易。也許有一種方法可以從vm類的反射中找到數據類型,但這遠遠超出我的理解。
您能否提供一些關於您的方法調用將如何顯示的示例? – BoltClock 2011-12-29 04:13:46
你可以總是傳遞一個字符串,然後在函數內將其轉換爲int或double(例如Int32.Parse(strVal)),否則會在某些情況下導致精度問題? – nycdan 2011-12-29 04:17:06
是的,我認爲總是傳遞一個字符串將工作。在函數內部,我只需要轉換爲所需的對象類型。我認爲這是一條好路。 – 2011-12-29 04:23:13