源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-03-25 22:57 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:如何利用反射构建元数据查看器
原理比较简单,引入System.Reflection命名空间,利用反射查看某种Type下的方法,属性,字段和支持的接口等。
[u]复制代码[/u] 代码如下:
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:
[u]复制代码[/u] 代码如下:
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:
[u]复制代码[/u] 代码如下:
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: ********
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部