怎么反射将"System.Data.SqlClient.SqlDataAdapter"为类型System.Data.SqlClient.SqlDataAdapter吗? 
前面这个是字符串,后面为字符串所对应的类型.

解决方案 »

  1.   

    Activator.CreateInstance("System.Data.SqlClient.SqlDataAdapter")
      

  2.   

    string adpType = "System.Data.SqlClient.SqlDataAdapter";
                Type type = Type.GetType(adpType);
                //反射创建实例
                object obj = System.Activator.CreateInstance(type);
                //转换
                System.Data.SqlClient.SqlDataAdapter adp = (System.Data.SqlClient.SqlDataAdapter)obj;
                //反射调用方法
                type.InvokeMember("methodName",System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic,null,obj,new object[1]{string.Empty });
      

  3.   

    object obj = Activator.CreateInstance(Type.GetType("")); 
      

  4.   

                string adpType = "System.Data.SqlClient.SqlDataAdapter"; 
                Type type = Type.GetType(adpType); type为null啊. 
      

  5.   

    好像这种方式获取不到ADO.NET对象
      

  6.   

    尽量用完整的 type 字符串形式,
    "typename, assemblyFullName"看看.net 系统目录下的 config/machine.config, config/web.config大量使用了这个.有了那个表示形式, Type.GetType 就感激你了.
      

  7.   

    string adpType = "System.Data.SqlClient.SqlDataAdapter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; Type type = Type.GetType(adpType); 这样就好了 public static Type GetType( 
    string typeName 

    public static function GetType( 
    typeName String 
    )  参数 
    typeName 
    类型:String 要获取的类型的程序集限定名称。请参见 AssemblyQualifiedName。如果该类型位于当前正在执行的程序集中或者 Mscorlib.dll 中,则提供由命名空间限定的类型名称就足够了 经过测试,2008的typeof(System.Data.SqlClient.SqlDataAdapter).AssemblyQualifiedName 
    为 -> 
    “System.Data.SqlClient.SqlDataAdapter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”
      

  8.   

    那要怎么才能将对象转换为Type所代表的类型呢?
      

  9.   

    那要怎么才能将对象转换为Type所代表的类型呢?
    不知道楼主指的是什么意思?如果编译期间不知道他是什么类型,那我们只能获得他的类型信息对象
    GetType(),这个时候具体是什么类型还是不确定的。如果非要转换
    switch吧
                object obj;
                switch (obj.GetType().Name())
                {
                    case "String": string str = obj.ToString(); break;
                    case "Int32": int num = int.Parse(obj.ToString()); break;
                }
    不知道楼主的问题是不是想用工厂模式??
      

  10.   

                object obj;
                switch (obj.GetType().Name)
                {
                    case "String": string str = obj.ToString(); break;
                    case "Int32": int num = int.Parse(obj.ToString()); break;
                }
      

  11.   

    Convert.ChangeType(object,Type);
    这个可以.
      

  12.   

    object obj = Activator.CreateInstance(Type.GetType("类型完全限定名"));