有3个类:ctl_A,ctl_B,ctl_C
有一个枚举:
enum ctlType
{
ctl_A,
ctl_B,
ctl_C
};现有一个方法:
void ctlsetbind(object sender,string fieldname,ctlType type){}
使得根据传递的type的值来对传递的sender(即那3个类:ctl_A,ctl_B,ctl_C)进行类型转换并给其属性赋值,要求达到:
ctlType类型 obj= (ctlType类型)sender;         //在这里我不知道怎么写
//obj.Fieldname=fieldname;
//obj.DataBind();如果是告诉我进行判断if (type==ctlType.ctl_A)然后在ctl_A obj=(ctl_A)sender的话那就免了,用这样的方法免提了,因为假如我的ctlType枚举里面有很多值的话,那判断下去就太麻烦了。

解决方案 »

  1.   

    这种转换没有变量可保存,如果保存为object类型的话,根本不需要转换
    如果要使用这个对象的方法或属性,可以用反射,如果用反射的话,你传过来一个ctlType type根本就是画蛇添足.
      

  2.   

    我知道ctlType type是多余的,直接用sender.getType()就完了,我是为了后面有写东西方便才写的,我这个方法很复杂有很多参数,所以才简写了这几个参数
      

  3.   

    obj.GetType().GetProperty("xxx").SetValue(obj, val, null);
    obj.GetType().GetMethod("xxxx").Invoke(obj,null);
      

  4.   

    谢了,功能是实现了,但有没有更好的方法呢?
    我听别人说用什么CreateInstance(classname),不晓得是怎么个用法