利用传入的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();
        }

    }
复制代码
已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页