2014-02-21 129 views
0

我正在開發ASP.NET Web窗體項目,並創建了自定義事件處理函數。如何使用Type對象將對象類型的對象轉換爲Type對象引用的類型

potected void MyEventHandler(object sender, EventArgs e) 
{ 

    var actualObject = (ActualObject) sender; 

    // I don't want to do what is in the line above. I want to use my EventArgs 
    // parameter 'e' which contains a property of type Type to cast the sender 
    // object into the underlying type defined in the EventArg property. 

    // I want to do something like this ... 

    var actuaObject = (typeof(e.TypeProperty)) sender; 

    //i.e. I don't want to explicitly reference the type to which 
    //I'm trying to cast between the parentheses 

} 

希望這個問題不是太複雜。

+0

請注意,無論您選擇哪種解決方案,您都無法在此獲取類型安全代碼,因爲編譯器無法在編譯時確定實際對象的類型。 –

回答

0

可以使用dynamic功能,以TypeConverter

TypeConverter converter = new TypeConverter(); 
dynamic variable = converter.ConvertTo(sender, typeof(e.TypeProperty)); 

然後你就可以訪問你的屬性,但你不能使用IntelliSense,這是比這disadvantage.Other,它應該正常工作。

+0

感謝您的回覆。它編譯得很好,但在運行時失敗。我最近繼承了這個應用程序,所以我將不得不作出一些基本的改變,這將允許這種類型的代碼工作,甚至可以減輕我需要做的事情,我首先要做的就我的問題。最好的問候 – user3308087

0

您可以使用標準類型的Convert.ChangeType方法;但是,它不會轉換自定義類型。

public static Object ChangeType(
    Object value, 
    Type conversionType 
) 

實施例:

object d = Convert.ChangeType("3.1416", typeof(double)); 

注意,返回值是object類型。因此,您可能仍然需要在某個地方投射。

+0

感謝您的回覆。我想我需要簡化我對這個問題的方法。最好的祝福。 – user3308087