object obj = new X();现在这个对象 obj 是 object类型的我有什么办法可以获得 obj 的本来类型  X

解决方案 »

  1.   

    也就是在一个泛型方法中可以直接使用
    public void fun<t>(t obj)
    {}但是这在调用这个t 的时候 不知道这个 obj 的确切类型
      

  2.   

    但到的是个 Type对象啊 有什么办法获得 X类型啊
      

  3.   


    你以为普通正常使用泛型时,这个func<t>的参数t是运行时动态指定的吗?
      

  4.   

    即使是泛型,运行时对象的类型也是必须要对JIT是明确的才行,不管你是.Net 4.0里的dynamic或者var
    不过你可以给某个类加泛型约束,比如 public class Test<T> where T : new()
        {
             public void fun<t>(t obj)
             {
                  object obj = new T();  //这样是可以的,因为实例化时你的T已经很明确
             }
        }上面所说的可能并不是LZ要问的,希望有所帮助
      

  5.   

    public void fun<T>(T t)
      

  6.   

    泛型的类型的对象实例化当然可以反射来创建。但是如果你的出发点确实是反射,也就不会有#4楼的回复了。可见你并不是擅长反射的。正常地设计程序,还是按照普通的思路来设计。编程就好象是写小说要成文自明,本来就是要写出强类型的代码,而不要使用object来声明变量的类型。