zoukankan      html  css  js  c++  java
  • C# 反射泛型

     1 private static string GetValueString(string className, string filedName, int id, Assembly assembly) {
     2     Assembly ass = Assembly.GetExecutingAssembly();
     3     Type type = ass.GetType("Rws.BLL.BaseBLL.BaseOperationBLL`1");
     4     Type resultType = assembly.GetType("Rws.Model." + className);
     5     Type t = type.MakeGenericType(resultType);
     6     object obj = ass.CreateInstance(t.FullName);
     7     MethodInfo mi = t.GetMethod("SelectByID");
     8     object resultObject = mi.Invoke(obj, new object[] { id });
     9     var pInfo = resultType.GetProperty(filedName);
    10     return pInfo.GetValue(resultObject, null).ToString();
    11 }

    注:[Rws.BLL.BaseBLL.BaseOperationBLL`1]的末尾为:`1,即重音符号(`)和数字1

     如果SelectByID有两个重载函数:

    1 public T SelectByID(int autoID)
    2 {
    3         ......
    4 }
    5 public T SelectByID(string guid)
    6 {
    7         ......
    8 }

    现在反射调用参数为int类型的函数,将下面的代码替换上面的:

    1 MethodInfo mi = t.GetMethod("SelectByID", BindingFlags.Public | BindingFlags.Instance, null, new Type[] { typeof(int) }, null);
    
    
    
  • 相关阅读:
    [HEOI2016/TJOI2016]树
    [BJOI2018]求和
    洛谷P5002 专心OI
    [GDOI2014]采集资源
    小凯的数字
    APP微信支付
    java对接支付宝支付
    layui 视频上传本地(项目)
    mybatis Generator生成代码及使用方式
    Java IO流学习总结
  • 原文地址:https://www.cnblogs.com/zhuhc/p/3450620.html
Copyright © 2011-2022 走看看