直接上代码,引用CommTools.dll、包括aspx显示页面和aspx.cs获取反射数据源代码

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CommTools; namespace WebAppReflector
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
const string NameSpace = "CommTools"; //获取CommTools.WebUtils的方法,包括get,set
var ass = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(t => t.FullName.Contains(NameSpace));
if (ass == null) { Response.Write("no assembly"); return; }
var methods = ass.GetType(string.Format("{0}.{1}", NameSpace, "WebUtils")).GetMethods();
ddlMethds.DataSource = methods;
ddlMethds.DataBind(); //获取CommTools.WebUtils的属性
var members = ass.GetType(string.Format("{0}.{1}", NameSpace, "WebUtils")).GetProperties();
ddlMembers.DataSource = members;
ddlMembers.DataBind(); //获取方法(CommTools.WebUtils类的Get<T>)的请求参数名、类型、返回值类型,public static T Get<T>(string url)
var thisMethod = methods.FirstOrDefault(t => t.Name == "Get");
var reqParams = thisMethod.GetParameters();
ddlParams.Items.AddRange(reqParams.Select(t => new ListItem(t.Name + "|" + t.ParameterType.Name)).ToArray());
Response.Write("返回值类型" + thisMethod.ReturnType.ToString() + "<br/>"); //empty:thisMethod.ReturnParameter.Name }
}
}
 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CommTools; namespace WebAppReflector
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
const string NameSpace = "CommTools"; //获取CommTools.WebUtils的方法,包括get,set
var ass = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(t => t.FullName.Contains(NameSpace));
if (ass == null) { Response.Write("no assembly"); return; }
var methods = ass.GetType(string.Format("{0}.{1}", NameSpace, "WebUtils")).GetMethods();
ddlMethds.DataSource = methods;
ddlMethds.DataBind(); //获取CommTools.WebUtils的属性
var members = ass.GetType(string.Format("{0}.{1}", NameSpace, "WebUtils")).GetProperties();
ddlMembers.DataSource = members;
ddlMembers.DataBind(); //获取方法(CommTools.WebUtils类的Get<T>)的请求参数名、类型、返回值类型,public static T Get<T>(string url)
var thisMethod = methods.FirstOrDefault(t => t.Name == "Get");
var reqParams = thisMethod.GetParameters();
ddlParams.Items.AddRange(reqParams.Select(t => new ListItem(t.Name + "|" + t.ParameterType.Name)).ToArray());
Response.Write("返回值类型" + thisMethod.ReturnType.ToString() + "<br/>"); //empty:thisMethod.ReturnParameter.Name //计算并显示toMD5(123)
var aMethod = ass.GetType(string.Format("{0}.{1}", NameSpace, "StringOpertion")).GetMethod("toMD5");
object rspEntity = aMethod.Invoke(null, new[] { "" });
Response.Write("toMD5(123):" + rspEntity + "<br/>"); }
}
}

利用反射,可获取某个程序集内部的所有方法、每个方法的参数、类型等。结合html 控件唯一命名,进行http get或post请求传参数,完全可以做个接口可视化调试页面。

主要思路:获取dll内部的多个方法、绑定显示=》选择某方法,获取该方法内部的属性,以唯一html id显示(简单类型直接显示txt,bool、枚举显示ddl,复杂类型显示答大文本框,给使用者填写json),对于实体注释读取注释xml=》人工赋值后提交,对请求参数使用反射赋值(对于不同类型不同赋值方式),后可以本地直接dll调用、也可以远程http json请求=》获得结果直接json序列化显示

使用c#反射实现接口可视化调试页面的更多相关文章

  1. 基于socket.io打造hybrid调试页面

    前言 参考的钉钉调试页面实现,仅供学习! 功能为: PC端编写代码,手机端执行 解决的痛点是: 避免了调试hybrid应用时重复写各种测试页面 源码与示例 源码 https://github.com/ ...

  2. UE4物理模块(一)---概述与可视化调试

    UE4.21前的版本采用的是NVIDIA的PhysX做为其默认的物理引擎,用于计算3D世界的碰撞查询与物理模拟.自4.21版本开始改物理调用接口,但这并不是闲来重构代码,果然在2019GDC大会上放出 ...

  3. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...

  4. 开源发布:VS代码段快捷方式及可视化调试快速部署工具

    前言: 很久前,我发过两篇文章,分别介绍自定义代码版和可视化调试: 1:Visual Studio 小技巧:自定义代码片断 2:自定义可视化调试工具(Microsoft.VisualStudio.De ...

  5. eclipse-debug时直接进入/不进入/提示进入调试页面修改

    eclipse使用debug调试程序时 默认设置每次程序走到断点位置时提示是否进入调试页面(如图) 而个人习惯有些系统直接进入调试页面.也有些人系统不进入调试页面调试 在这里勾选Remember my ...

  6. 【转】手机web前端调试页面的几种方式

    前言 PC端web页面调试比较容易,这里主要说几种移动端调试的方法,从简单到复杂.从模拟调试到远程调试,大概分为几部分: 1.Chrome DevTools(谷歌浏览器)的模拟手机调试 2.weinr ...

  7. Halcon12新特性之VS可视化调试插件

    当我们用VC\C#调试halcon代码的时候,通常会遇到一个头痛的问题,我们无法看到halcon变量的调试信息 如下图:什么鬼...什么鬼   比如我们想看一个double数值变量,我们需要 doub ...

  8. IE调试页面总结

    随着IE版本的升级,IE变的越来越强大,随之带来的问题也是越来越明显,如:如何调试在低版本的浏览器中 的情况 IE9的方法: 出于未知需求,用户在安装了较高版本IE浏览器(IE9)之后,又需要使用低版 ...

  9. chrome 一进入调试页面就会自己主动打断点

    近期在用chrome调试页面时.一刷新页面总会自己主动打断点.自己鼓捣了一下,发现 把它改为这个样子的时候就能够解决问题,即把调试面板上的第5个button从Deactivate breakpoint ...

随机推荐

  1. IOS开发 文件路径

    1.开发平台路径: /Developer/Platforms 此路径下一般有三个目录,分别是mac电脑.模拟器.iphone真机 MacOSX.platform iPhoneSimulator.pla ...

  2. 【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯

    实验原理: STM32的定时器有PWM功能,iCore4的蓝色LED连接在定时器的输出接口上, 可以通过定时器的PWM输出控制LED的亮度,从而实验呼吸灯的功能. 核心代码: int main(voi ...

  3. 【WPF】自定义形状的按钮Button

    需求:做一个如下图所示的多边形按钮. <!-- 特殊形状的按钮 --> <Grid> <Polygon Points="0,0 140,0 190,42 140 ...

  4. Go Revel - Testing(测试模块)

    revel提供了一个测试框架来方便的为自己的程序编写功能测试用例. 默认创建的应用骨架附带一个简单的测试用例,这里将它作为起点 ##概览 测试保存在`tests`目录: corp/myapp app/ ...

  5. Java知多少(46)try和catch的使用

    尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常.这样做有两个好处.第一,它允许你修正错误.第二,它防止程序自动终止.大多数用户对于在程序终止运行和在无论何时 ...

  6. Hadoop、Spark 集群环境搭建

    1.基础环境搭建 1.1运行环境说明 1.1.1硬软件环境 主机操作系统:Windows 64位,四核8线程,主频3.2G,8G内存 虚拟软件:VMware Workstation Pro 虚拟机操作 ...

  7. README.md文件编辑

    111 蜗牛图片管理系统 =============== ## 安装环境 >+ thinkphp版本: >+ php版本:.0以上 >+ 需要安装在服务器环境,免费使用 ### 特点 ...

  8. 什么是web标准、可用性、可访问性

    前言:大家不难发现,只要是招聘UED相关的岗位,如前端开发工程师.交互设计师.用户研究员甚至视觉设计师,一般都对web标准.可用性和可访问性的理解有要求.那么到底什么是web标准.可用性.可访问性呢? ...

  9. Java Debugging with Eclipse - Tutorial

    1.1. What is debugging? Debugging allows you to run a program interactively while watching the sourc ...

  10. Unity WidgetsUI CreateTaskView Demo

    Creating own ListView PS:TaskView 的Image去掉,背景才会变透明 Let's create own ListView, for this we need to wr ...