zoukankan      html  css  js  c++  java
  • 利用传入的Type类型来调用范型方法的解决方案

    起因:自定义一个GridView控件,其数据源来源于一个通用方法Get<T>(),根据你传入的T到数据库中得到相应的数据,问题是定义GridView控件时没法在界面端设置使用泛型,只能在每个使用这个GridView控件时绑定数据。如果你没看懂这个起因也没关系,我们用一段代码来描述一下问题:
    我希望使用的是从外边传过来的类型tt来调用test1范型方法

    复制代码
    class Program 
        { 
            static void Main(string[] args) 
            { 
                MyClass m = new MyClass(); 
                m.tt = typeof(Program); 
                m.test2(); 
            } 
            

        } 

        class MyClass 
        { 
            public Type tt { get; set; } 
            public int userid { get; set; } 
            public string Name { get; set; } 
            public string test2() 
            { 
              // test1 <T>(); 
              我希望使用的是从外边传过来的类型tt来调用test1范型方法 
            } 
            public string test1 <T>() 
            { 
                return typeof(T).ToString(); 
            } 
            
        }
    复制代码

    解决方案:

    复制代码
    class MyClass
        {
            public Type tt { get; set; }
            public int userid { get; set; }
            public string Name { get; set; }
            public string test2() 
            { 
                object result = typeof(MyClass).GetMethod("test1").
                    MakeGenericMethod(tt).Invoke(this, null);
                return result.ToString();
            }
            public string test1<T>()
            {
                return typeof(T).ToString();
            }

        }
    复制代码
     
     
    内容分享自:http://www.cnblogs.com/nuaalfm/archive/2009/02/24/1397340.html 谢谢。
  • 相关阅读:
    [转载]Back up all of your mysql databases nightly
    编写windows7 bat运行脚本
    Windows7开通Internet信息服务
    【LeetCode题解】7_反转整数
    【LeetCode题解】350_两个数组的交集Ⅱ
    【LeetCode题解】349_两个数组的交集
    【LeetCode题解】94_二叉树的中序遍历
    【LeetCode题解】144_二叉树的前序遍历
    【LeetCode题解】2_两数相加
    【LeetCode题解】530_二分搜索树的最小绝对值差
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/4461669.html
Copyright © 2011-2022 走看看