• 如何用反射实现如下的泛型方法调用?


     

    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

  • 相关阅读:
    js 实现页面局部(或图片)放大功能(vue)
    momentjs 使用总结
    VUX的使用方法(以弹出框为例)
    vue alert插件(标题为图片)(自写)
    vue 五星评价插件
    ES6 学习笔记(基础)
    SVG
    纯 CSS 实现实心三角形和空心三角形
    selectedIndex和onchange事件
    DOM文档获取和简介
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1574667.html
Copyright © 2020-2023  润新知