zoukankan      html  css  js  c++  java
  • 如何用反射实现如下的泛型方法调用?

     

    1. 代码

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Reflection;

    namespace GenericReflectingApp1

    {

        class Program

        {

            static void Main(string[] args)

            {

                myGeneric<string> myString = new myGeneric<string>();

     

                myString.Show<int>(100);

     

                ShowTypeInfo(myString.GetType());

     

                //出现错误,"发现不明确的匹配。",

                //MethodInfo myMethod = myString.GetType().GetMethod("Show");

     

                //如何指定泛型方法参数

                //MethodInfo myMethod = myString.GetType().GetMethod("Show", new Type[] { });

     

                //Console.WriteLine (string.Format ("Is Generic Method:{0}",   myMethod .IsGenericMethod.ToString ()));

                Console.Read();

            }

     

            static void ShowTypeInfo(Type t)

            {

                Console.WriteLine(string.Format("TypeName:{0} Method List:", t.Name));

     

                foreach (MethodInfo obj in t.GetMethods())

                {

     

                    Console.WriteLine(string.Format("Method Name:{0};IsGeneric Method:{1} ;ContainsGenericParameters:{2} ",

                        obj.Name, obj.IsGenericMethod.ToString(),obj.ContainsGenericParameters.ToString()));

     

                    if (obj.GetGenericArguments().Count() > 0)

                    {

                        Console.WriteLine(string.Format("Generic Arguments 's count:{0}", obj.GetGenericArguments()[0].Name

                            ));

                    }

                }

            }

        }

     

        class myGeneric<T>

        {

         public    void Show<U>(U u)

            {

                Console.WriteLine(u.ToString());

            }

     

         public void Show(T t)

         {

             Console.WriteLine(t.ToString());

         }

        }

    }

    2.         如何通过反射找到泛型方法 Show<U>(U u) MethodInfo

  • 相关阅读:
    十.总结drf视图
    一.9.多云管理同步服务器
    一.vue 初识
    一.8.django权限管理/drf权限管理
    一.7.服务器之分页和搜索应用
    一.6.序列化应用之服务器同步功能
    一.5.序列化应用之服务器制造厂与型号app功能
    【前端背景UI】鼠标磁性动态蜘蛛网背景源码
    【vue】导入式,使用vue与element UI, 单人开发项目,告别脚手架
    【python后台admin】所有属性显示设置
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1574667.html
Copyright © 2011-2022 走看看