使用してKufen.Common.Definitionsを。 使用してMono.Cecilを。 使用してシステムを。 使用してSystem.Collections.Genericを。 使用してSystem.Linqのを。 使ってSystem.Text.RegularExpressionsを。 使用してのSystem.Webを。 名前空間Kufen.WebApi.SwaggerHelp { パブリック クラスSwaggerModelHelp { パブリック 静的リスト<SwaggerEncryptModelInfo> GetDecryptRequestMetaInfoList() { VARの decryptRequestMetaInfoList = 新しいリスト<SwaggerEncryptModelInfo> (); VaRのパス=typeof演算(SwaggerModelHelp).Assembly.Location。 VaRのアセンブリ= AssemblyDefinition.ReadAssembly(パス)。 VAR toInspect = assembly.MainModule .GetTypes() .SelectMany(T => t.Methods.Select(M => 新しい{T、M})) .Where(X => xmHasBody)。 toInspect = toInspect.Where( X => xtName.EndsWith(" コントローラ")&& xmIsPublic == 真 && xmParameters.Any(M=> m.ParameterType.Name == がNameOf(DecryptRequest)) )。 foreachの(VARの方法でtoInspect) { VAR。containsEncryptRequestMethodBody = method.m.Body.Instructions.ToList()ここで、(M => m.ToString()(含まれています。" EncryptRequestHandler " ))FirstOrDefault()。 もし(!containsEncryptRequestMethodBody = ヌル) { 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(新しいSwaggerEncryptModelInfo { コントローラ = method.t.FullName、 アクション = = method.m.Name、 ReqModelTypeencryptRequestModel、 ResModelType = encryptResponseModel })。 } } 戻りdecryptRequestMetaInfoList。 } } }