2012-06-28 69 views
5

這不會編譯,但我想要做的只是將對象轉換爲傳遞給該函數的't'?如何將對象轉換爲傳遞給函數的類型?

public void My_Func(Object input, Type t) 
{ 
    (t)object ab = TypeDescriptor.GetConverter(t).ConvertFromString(input.ToString()); 
} 
+1

我是否正確理解您要將輸入對象轉換爲給定的類型t?如果輸入不是t類型,會發生什麼? – FrankE

+0

@FrankE - 該功能將以某種方式工作,以至於曾經使用它的人將知道在該功能中輸入正確的類型,我承擔責任! – BornToCode

+0

你想用這個物體做什麼?也許你想使用一個通用函數'public void My_Func (T input)'? – ekholm

回答

13

你可以這樣做:

object ab = Convert.Changetype(input, t); 
但是

,它看起來像你想在一個強類型的方式,您只能通過使用泛型這樣做使用ab

public void My_Func<T>(Object input) 
{ 
    T ab = (T)Convert.ChangeType(input, typeof(T)); 
} 
+0

不知道'Convert.Changetype',謝謝。 –

+0

'object ab = Convert.Changetype(input,t);'和'object ab = input'有什麼區別? – ekholm

+0

@ekholm'object ab =「01/01/2008」'''object ab = Convert.ChangeType(「01/01/2008」,typeof(DateTime))' –

1
public void My_Func(Object input, Type t) 
{ 
    object test = new object(); 
    test = Convert.ChangeType(test, t); 
    test = TypeDescriptor.GetConverter(t).ConvertFromString(input.ToString()); 
} 
相關問題