添加重写VisualDev接口
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.DependencyInjection;
|
||||
using JNPF.VisualDev.Entitys;
|
||||
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
|
||||
namespace JNPF.VisualDev
|
||||
{
|
||||
public interface IVisualDevOverideActionManager : ISingleton
|
||||
{
|
||||
void Set(string modelId, IOverideVisualDevService overideVisualDev);
|
||||
|
||||
IOverideVisualDevService? GetOrDefault(string modelId);
|
||||
}
|
||||
|
||||
public interface IOverideVisualDevService
|
||||
{
|
||||
//string ModelId { get; set; }
|
||||
OverideVisualDevFunc OverideFuncs { get; }
|
||||
|
||||
//Task<dynamic>? GetList(VisualDevModelListQueryInput input);
|
||||
//Task<dynamic>? GetInfo(string id);
|
||||
//Task<dynamic>? GetDetails(string id, string modelId);
|
||||
//Task<dynamic>? Create(VisualDevModelDataCrInput visualdevModelDataCrForm);
|
||||
//Task<dynamic>? Update(string id, VisualDevModelDataUpInput visualdevModelDataUpForm);
|
||||
//Task? Delete(string id);
|
||||
//Task? BatchDelete(VisualDevModelDataBatchDelInput input);
|
||||
//Task<dynamic>? Export(VisualDevModelListQueryInput input);
|
||||
//Task<dynamic>? Import(IFormFile file);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.VisualDev.Entitys;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
|
||||
namespace JNPF.VisualDev
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
|
||||
public class OverideVisualDevAttribute : Attribute
|
||||
{
|
||||
public string ModelId { get; set; }
|
||||
public OverideVisualDevAttribute(string modelId)
|
||||
{
|
||||
ModelId = modelId;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.DependencyInjection;
|
||||
using JNPF.VisualDev.Entitys;
|
||||
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
|
||||
namespace JNPF.VisualDev
|
||||
{
|
||||
public class OverideVisualDevFunc
|
||||
{
|
||||
public Func<VisualDevModelListQueryInput, Task<dynamic>>? GetListAsync { get; set; } = null;
|
||||
public Func<string, Task<dynamic>>? GetAsync { get; set; } = null;
|
||||
public Func<string, Task<dynamic>>? GetDetailsAsync { get; set; } = null;
|
||||
public Func<VisualDevModelDataCrInput, Task<dynamic>>? CreateAsync { get; set; } = null;
|
||||
public Func<string, VisualDevModelDataUpInput, Task<dynamic>>? UpdateAsync { get; set; } = null;
|
||||
public Func<string, Task>? DeleteAsync { get; set; } = null;
|
||||
public Func<VisualDevModelDataBatchDelInput, Task>? DeleteRangeAsync { get; set; } = null;
|
||||
public Func<VisualDevModelListQueryInput, Task<dynamic>>? ExportAsync { get; set; } = null;
|
||||
public Func<IFormFile, Task<dynamic>>? ImportAsync { get; set; } = null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.DependencyInjection;
|
||||
using JNPF.VisualDev.Entitys;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
|
||||
namespace JNPF.VisualDev
|
||||
{
|
||||
public class OverideVisualDevManager
|
||||
{
|
||||
private static ConcurrentDictionary<string, Type> actions = new ConcurrentDictionary<string, Type>();
|
||||
public OverideVisualDevManager()
|
||||
{
|
||||
}
|
||||
|
||||
public static IOverideVisualDevService? GetOrDefault(string modelId)
|
||||
{
|
||||
var tp = actions.GetOrDefault(modelId);
|
||||
if (tp != null) { return (IOverideVisualDevService)App.GetService(tp); }
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void Add(string modelId, Type overideVisualDev)
|
||||
{
|
||||
if (!actions.ContainsKey(modelId))
|
||||
{
|
||||
actions.TryAdd(modelId, overideVisualDev);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using JNPF.DependencyInjection;
|
||||
using JNPF.Reflection;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace JNPF.VisualDev
|
||||
{
|
||||
[SuppressSniffer]
|
||||
public static class OverideVisualDevServiceCollectionExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// 添加重写在线开发接口的服务
|
||||
/// </summary>
|
||||
/// <param name="services"></param>
|
||||
/// <returns></returns>
|
||||
public static IServiceCollection AddOverideVisualDev(this IServiceCollection services)
|
||||
{
|
||||
var actions = App.EffectiveTypes.Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(IOverideVisualDevService).IsAssignableFrom(u)).ToList();
|
||||
foreach (var item in actions)
|
||||
{
|
||||
var attr = item.GetAttribute<OverideVisualDevAttribute>();
|
||||
if (attr != null)
|
||||
{
|
||||
OverideVisualDevManager.Add(attr.ModelId, item);
|
||||
}
|
||||
}
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user