我知道這很可能是一個涉及泛型的簡單問題,或者很可能只是一個大「不」的整體,但我很好奇,看看我能否實現這個目標。創建一個方法來處理所有類型的IEnumerable(在設計運行時未知類型)
我試圖創建一個方法,需要在object
,如果object
是一個枚舉類型,將它傳遞給一個方法,可以在任何種類的枚舉上工作,但我越來越卡住。
我目前對於發生在一個對象方法的代碼看起來像下面這樣:
private void MyMethod()
{
Dictionary<string, object> MyVals = new Dictionary<string,object>();
... fill the MyVals dictionary ...
object x = MyVals["Val_1"];
Type type = x.GetType();
// Check if we have a series of values rather than a single value
if (type != typeof(string) && typeof(IEnumerable).IsAssignableFrom(type))
Test(x);
}
然後,我以爲我可以寫東西類似下面的方法簽名爲我Test
之一方法:
1.寫入它,就好像它是一個IEnumerable對象的:
private void Test(IEnumerable<object> MyEnumeration)
嘗試過通過調用它:
Test((IEnumerable<object>)x);
信息運行時錯誤,它不能從IEnumerable<int>
轉換爲IEnumerable<object>
2.使用try泛型:
private void Test<T>(IEnumerable<T> MyEnumeration)
打過電話它通過:
Test(x);
導致簽名爲錯誤/無效參數的設計時錯誤。
或通過:
Test<type>(x);
導致設計時錯誤的類型或命名空間type
找不到。
這怎麼能做到或者它只是不好的編程習慣,有更好的方法來做到這一點?
謝謝!
沒有理由無論是從看簽名失敗。然而,「既沒有作用」也不能解釋正在發生的事情,這使得這很難解決。當你嘗試這些時,什麼具體不起作用,一般來說,Test方法試圖完成什麼? –
夠了,@TravisJ。讓我更新我的問題... –
問題更新與我的嘗試 - 希望使(至少一點)更有意義。 –