c# Mono.Cecil IL方式 读MethodBody
using Kufen.Common.Definitions; using Mono.Cecil; using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Web; namespace Kufen.WebApi.SwaggerHelp { public class SwaggerModelHelp { public static List<SwaggerEncryptModelInfo> GetDecryptRequestMetaInfoList() { var decryptRequestMetaInfoList = new List<SwaggerEncryptModelInfo>(); var path = typeof(SwaggerModelHelp).Assembly.Location; var assembly = AssemblyDefinition.ReadAssembly(path); var toInspect = assembly.MainModule .GetTypes() .SelectMany(t => t.Methods.Select(m => new { t, m })) .Where(x => x.m.HasBody); toInspect = toInspect.Where( x => x.t.Name.EndsWith("Controller") && x.m.IsPublic == true && x.m.Parameters.Any(m => m.ParameterType.Name == nameof(DecryptRequest)) ); foreach (var method in toInspect) { var containsEncryptRequestMethodBody = method.m.Body.Instructions.ToList().Where(m => m.ToString().Contains("EncryptRequestHandler")).FirstOrDefault(); if (containsEncryptRequestMethodBody != null) { var ilStr = containsEncryptRequestMethodBody.ToString(); var regMatchResult = Regex.Match(ilStr, "EncryptRequestHandler<(?<EncryptRequestModel>[^,]+),(?<EncryptResponseModel>[^>]+)>"); var encryptRequestModel = regMatchResult.Groups["EncryptRequestModel"].Value; var encryptResponseModel = regMatchResult.Groups["EncryptResponseModel"].Value; decryptRequestMetaInfoList.Add(new SwaggerEncryptModelInfo { Controller = method.t.FullName, Action = method.m.Name, ReqModelType = encryptRequestModel, ResModelType = encryptResponseModel }); } } return decryptRequestMetaInfoList; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2015-09-17 MVC生成图片验证码,可指定位数
2015-09-17 MVC下载(存在文件的情况)
2015-09-17 MVC上传(单文件)