我可以通過反射和調用(或者如果這個動作有更好的名字)他們可以獲得演員操作符嗎? 這是主要問題,如果是的話,它解決了我的問題。通過反射獲取顯式演員操作
但如果有人知道另一種解決方案如下:
我有很多目標瓦爾(未知量,直到運行時),每一個有不同的類型,但所有的人都號(雙,是int,short) 。
另一方面,我有相同數量的雙變量,並且需要比較每個變量的值。
object[] Value1; //this can be double, short or int, only known at runtime.
double[] Value2;
//I need simply to do:
(for int i = 0; i < Value1.Length, i++)
{
(if Value1[i] == Value2[i]) //here's the problem
//the comparison always return false, because of different types
....
我tryed許多因素,包括通過反射調用「的CompareTo」的方法,但它要求德對象瓦爾是相同類型的含調用的方法的實例的的。 (不能從double調用並傳遞一個int參數,也不能從int調用並傳遞雙參數)
所以,如果我可以投它們: 一種方法是從double到未知類型d不得不使用一些反射) 另一種方法是從對象到未知類型的兩步轉換,並從該轉換爲雙重轉換。
限制:
動態不是從外部不可改變方法的一個選項(舊框架)
值1項來單獨地 「爲對象」。
忘記告訴:Value1項來自另一個程序集的方法(不可更改)。它返回值'as object'(類型爲int,short或double)。這就是爲什麼我不能簡單地將它們放入Value1的原因。會和試圖將對象加倍一樣。 – 2013-03-19 13:19:13
@Daniel,如果Value1(不是Value1本身)的值來自現有的方法,則可以在雙精度,短整數和整數上使用Convert.ToDouble(value)',並強制它們是雙精度。然後,如Tim所建議的那樣,Value1可以簡單地爲'double []'類型。 – Ruben 2013-03-19 13:26:20
感謝@Ruben我已經用你的建議更新了我的答案。 – 2013-03-19 13:40:40