2017-01-05 21 views
0

我想通過c#中的反射來識別一個屬性,然後總結這個值,但我認爲我以不正確的形式使用它。反射C#來idenfify和總結

var salarioTotal = 0.0; 
foreach (var item in T.GetType().GetProperties()) 
{      
    if (item.Name.ToString() == "Salario") 
    salarioTotal += (Double)item.GetValue(T, null); 

    String campo = (Convert.ToString(salarioTotal)); 

    item.SetValue(T, campo); 
} 
return T; 
+3

請創建一個我們可以使用重現的最小例子,我可以猜測T是什麼,但是請在你的問題上多加一些努力,如果你需要精確的答案 – nozzleman

+2

也可以嘗試用英語命名你的變量(至少在SO - 問題),這使我們更容易理解你想要實現什麼 – nozzleman

+0

如果你需要一些信息和如何問一個好問題,看看http://stackoverflow.com/help/how-to-詢問 – nozzleman

回答

0

你得到了你的財產double價值,創造一個總和,然後你將其轉換爲string設定值。你的Salario屬性是object類型,這將無法正常工作。如果你的財產是double類型的(我assum),你必須設置該屬性值而不將其轉換爲字符串第一:

item.SetValue(T, salarioTotal); 

一個旁註:想想從double改變你的屬性類型decimal,這對於工資信息來說是一個更好的選擇,因爲它避免了由浮點運算引起的舍入錯誤。

+0

他的代碼不是創建一個總和,它基本上只是將'salarioTotal'設置爲'T.Salario',並且上帝知道他正在嘗試如何調用SetValue(),他試圖在其中指定一個字符串'以他以前建議的'雙'... – nozzleman

+0

@nozzleman:我同意代碼有很多問題。我指出了一個不起作用的明顯錯誤。你是對的,他可能意味着別的東西,但這是每個人的猜測。 – Sefe

+0

你說得對,這就是爲什麼我要求細節;) – nozzleman