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

    }
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值