如何利用反射构建元数据查看器
如何利用反射构建元数据查看器
发布时间:2016-12-28 来源:查字典编辑
摘要:原理比较简单,引入System.Reflection命名空间,利用反射查看某种Type下的方法,属性,字段和支持的接口等。复制代码代码如下:...

原理比较简单,引入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#教程学习
热门C#教程学习
编程开发子分类