Admin.Core/src/platform/ZhonTai.DynamicApi/DynamicApiServiceExtensions.cs
(开头部分) 5KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.AspNetCore.Mvc.ApplicationParts;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using ZhonTai.DynamicApi.Helpers;
namespace ZhonTai.DynamicApi;
/// <summary>
/// Add Dynamic WebApi
/// </summary>
public static class DynamicApiServiceExtensions
{
/// <summary>
/// Use Dynamic WebApi to Configure
/// </summary>
/// <param name="application"></param>
/// <param name="optionsAction"></param>
/// <returns></returns>
public static IApplicationBuilder UseDynamicApi(this IApplicationBuilder application, Action<IServiceProvider,DynamicApiOptions> optionsAction)
{
var options = new DynamicApiOptions();
optionsAction?.Invoke(application.ApplicationServices,options);
options.Valid();
AppConsts.DefaultAreaName = options.DefaultAreaName;
AppConsts.DefaultHttpVerb = options.DefaultHttpVerb;
AppConsts.DefaultApiPreFix = options.DefaultApiPrefix;
AppConsts.ControllerPostfixes = options.RemoveControllerPostfixes;
AppConsts.ActionPostfixes = options.RemoveActionPostfixes;
AppConsts.FormBodyBindingIgnoredTypes = options.FormBodyBindingIgnoredTypes;
AppConsts.NamingConvention = options.NamingConvention;
AppConsts.GetRestFulControllerName = options.GetRestFulControllerName;
AppConsts.GetRestFulActionName = options.GetRestFulActionName;
AppConsts.AssemblyDynamicApiOptions = options.AssemblyDynamicApiOptions;
var partManager = application.ApplicationServices.GetRequiredService<ApplicationPartManager>();
// Add a custom controller checker
var featureProviders = application.ApplicationServices.GetRequiredService<DynamicApiControllerFeatureProvider>();
partManager.FeatureProviders.Add(featureProviders);
foreach(var assembly in options.AssemblyDynamicApiOptions.Keys)
{
var partFactory = ApplicationPartFactory.GetApplicationPartFactory(assembly);
foreach(var part in partFactory.GetApplicationParts(assembly))
{
partManager.ApplicationParts.Add(part);
}
}
后面还有 81 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
