2012-06-28 39 views
5

Điều này không biên dịch, nhưng những gì tôi đang cố gắng chỉ đơn giản là chuyển đối tượng sang 't' được chuyển đến hàm?Làm thế nào để đúc một đối tượng để loại thông qua một chức năng?

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

Tôi có hiểu chính xác bạn muốn truyền đối tượng nhập vào Loại t đã cho không? Điều gì sẽ xảy ra nếu đầu vào không thuộc loại t? – FrankE

+0

@FrankE - Chức năng sẽ hoạt động theo cách mà ai đã từng sử dụng nó sẽ biết nhập đúng loại chức năng, tôi chịu trách nhiệm của mình! – BornToCode

+0

Bạn muốn làm gì với đối tượng? Có lẽ bạn muốn sử dụng một hàm chung 'public void My_Func (T input)'? – ekholm

Trả lời

13

Bạn có thể làm một cái gì đó như:

object ab = Convert.Changetype(input, t); 
tuy nhiên

, nó trông giống như bạn muốn sử dụng ab một cách mạnh mẽ, đánh máy, mà bạn chỉ có thể làm như vậy bằng cách sử dụng Generics:

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

Không biết về 'Convert.Changetype', cảm ơn. –

+0

Sự khác biệt giữa 'đối tượng ab = Convert.Changetype (đầu vào, t);' và 'đối tượng ab = input' là gì? – ekholm

+0

@ekholm 'đối tượng ab =" 01/01/2008 "' so với 'đối tượng 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()); 
} 
Các vấn đề liên quan