如何利用反射构建元数据查看器

 更新时间:2013年06月08日 11:50:04   作者:  
本篇文章是对反射构建元数据查看器进行了详细的分析介绍,需要的朋友参考下

原理比较简单,引入System.Reflection命名空间,利用反射查看某种Type下的方法,属性,字段和支持的接口等。

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Data.SqlClient;
using System.Xml;
using System.Data;
using System.Reflection;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("Please input a type:");
                string typeStr = Console.ReadLine();

                if (typeStr == "exit" || typeStr == "quit")
                    break;

                try
                {
                    Type type = Type.GetType(typeStr);
                    ListFields(type);
                    ListMethods(type);
                    ListInterfaces(type);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("It is not a valid type!");
                }
            }

        }

        #region Methods
        public static void ListFields(Type type)
        {
            Console.WriteLine("******** Fields: ********");
            //foreach (FieldInfo item in type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Default))
            foreach (FieldInfo item in type.GetFields())
            {
                Console.WriteLine("->" + item.Name);
            }
            Console.WriteLine("");
        }

        public static void ListMethods(Type type)
        {
            Console.WriteLine("******** Methods: ********");
            //foreach (var item in type.GetMethods(BindingFlags.Default | BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic))
            var methodInfo = type.GetMethods().Select(m => m.Name).Distinct();
            foreach (var item in methodInfo)
            {
                Console.WriteLine("->" + item);
            }
            Console.WriteLine("");
        }

        public static void ListInterfaces(Type type)
        {
            Console.WriteLine("******** Interfaces: ********");
            foreach (var item in type.GetInterfaces())
            {
                Console.WriteLine("->" + item.Name);
            }
            Console.WriteLine("");
        }

        public static void ListProperties(Type type)
        {
            Console.WriteLine("******** Properties: ********");
            foreach (var item in type.GetProperties())
            {
                Console.WriteLine("->" + item.Name);
            }
            Console.WriteLine("");
        }
        #endregion

    }

}


测试case 1:
复制代码 代码如下:

Please input a type:
System.Int32
******** Fields: ********
->MaxValue
->MinValue

******** Methods: ********
->CompareTo
->Equals
->GetHashCode
->ToString
->Parse
->TryParse
->GetTypeCode
->GetType

******** Interfaces: ********
->IComparable
->IFormattable
->IConvertible
->IComparable`1
->IEquatable`1


测试case 2:
复制代码 代码如下:

Please input a type:
System.Math
******** Fields: ********
->PI
->E

******** Methods: ********
->Acos
->Asin
->Atan
->Atan2
->Ceiling
->Cos
->Cosh
->Floor
->Sin
->Tan
->Sinh
->Tanh
->Round
->Truncate
->Sqrt
->Log
->Log10
->Exp
->Pow
->IEEERemainder
->Abs
->Max
->Min
->Sign
->BigMul
->DivRem
->ToString
->Equals
->GetHashCode
->GetType

******** Interfaces: ********


相关文章

  • C#使用有道ip地址查询接口方法实例详解

    C#使用有道ip地址查询接口方法实例详解

    这篇文章主要介绍了C#使用有道ip地址查询接口方法,实例分析了有道IP地址查询接口的使用方法与数据返回格式,需要的朋友可以参考下
    2015-05-05
  • C#使用Dns类实现查询主机名对应IP地址

    C#使用Dns类实现查询主机名对应IP地址

    C#中的Dns类能够与默认的DNS服务器进行通信,以检索IP地址,这篇文章主要介绍了C#如何使用Dns类解析出主机对应的IP地址信息,需要的可以参考下
    2024-02-02
  • 如何在C#中集成Lua脚本

    如何在C#中集成Lua脚本

    这篇文章主要介绍了如何在C#中集成Lua脚本,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • C#反射调用拓展类方法实例代码

    C#反射调用拓展类方法实例代码

    这篇文章主要给大家介绍了关于C#反射调用拓展类方法的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • C#实现如何使用短信平台自动通知用户实例

    C#实现如何使用短信平台自动通知用户实例

    这篇文章主要介绍了C#实现如何使用短信平台自动通知用户实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • C#中38个常用运算符的优先级的划分和理解

    C#中38个常用运算符的优先级的划分和理解

    这只我自己在学C#中的一些总结,其中对于各级的划分方式、各操作符的优先级的理解并不见得正确,只是自己的看法,拿出来与大家分享
    2012-08-08
  • C#读取系统字体颜色与大小的方法

    C#读取系统字体颜色与大小的方法

    这篇文章主要介绍了C#读取系统字体颜色与大小的方法,较为详细的分析了C#获取系统字体颜色与大小的相关技巧,需要的朋友可以参考下
    2015-06-06
  • .NET MemoryCache如何清除全部缓存

    .NET MemoryCache如何清除全部缓存

    本文主要介绍了.NET MemoryCache如何清除全部缓存,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • C#通过属性名称获取(读取)属性值的方法

    C#通过属性名称获取(读取)属性值的方法

    本文主要介绍了C#通过属性名称获取(读取)属性值的方法,并提供了简化版代码,具有很好的参考价值,需要的朋友可以看下
    2016-12-12
  • C#/VB.NET创建PDF文档的示例代码

    C#/VB.NET创建PDF文档的示例代码

    通过代码创建 PDF 文档有许多好处,所以本文将为大家详细介绍一下如何使用 Spire.PDF for .NET 在 C# 和 VB.NET 中从头开始创建 PDF 文档,需要的可以参考下
    2023-12-12

最新评论