如题...比如 我有一个object的变量A  它本来是button类型的变量 但是我不知道A的本身类型
怎么样才能动态转型了?
如果还有更多的类型的话  怎么做?

解决方案 »

  1.   

    public class Test<T> where T : 命名空间
        {
            public T t{ get; private set; }
            public Test(T tt)
            {
                t= tt;
            }
        }
      

  2.   

    可以反射出他的类型 但是是Type类型的值啊  那要怎么转换啊 
      

  3.   

    不知道 怎么做啊   因为有可能传进去的object类型变量原本的类型很多  不好写很多个重载的方法 我就想到能否自动的转型 在知道特定的类型下 能否自动转型
      

  4.   

    getType()返回的是Type类型的值啊  就是不能转换...这个环节有难度!
      

  5.   

    不清楚如果直接获取Button对象,但是可以获取其属性或反射其方法
    比如接收的Object obj
    Type type = cmdAsk.GetType();
    PropertyInfo property = type.GetProperty("属性名称");//获取属性对象
    string proValue = property.GetValue(obj, null).ToString();//获取属性值                MethodInfo method = type.GetMethod("方法名称");//获取方法对象
    返回值 rvvalue = (返回值类型转换)method.Invoke(obj,null);//执行被调方法并接受返回值
      

  6.   

    比如要调用一个类TestDemo的GetName方法
    这里传递的TestDemo是用Object接收的
    这时候在公共处理方法中,并不知道要调用Object的哪个方法,可以在每个类中都加一个属性,MethodName,用于保存要调用的方法名称。这样TestDemo类就变成了这样
    public class TestDemo
    {
    public string GetName(){ return "I get this name.";}
    private string methodName;
    public string MethodName//每个类中该属性都取这样的名称
    {
    get{...}
    set{...}
    }
    }
     然后在接收的地方
    传递之前,TestDemo td = new TestDemo(); td.MethodName="GetName";//设定要执行的方法名称
    接收后:
    Type type = obj.GetType();//obj为参数(Object obj),接收传进来的TestDemo类
    PropertyInfo property = type.GetProperty("MethodName");//获取保存被调方法名称的属性
    string methodName = property.GetValue(obj, null).ToString();//获取被调方法名
    MethodInfo method = type.GetMethod(methodName);//获取被调方法
    string result = (string)method.Invoke(obj,null);//执行被调方法并接受返回值
    这样就获取到result值为:I get this name.