2014-02-21 123 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