贴代码PasteForm框架之框架核心帮助类PasteFormHelper说明
简介
PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管理端只有Html+js版本的,后续将支持小程序,Vue等
案例源码
案例源码在
https://gitee.com/pastecode/paste-template
不定期升级
AllInDto!
通过引入PasteForm,一个项目哪怕100个数据表,一般的管理页面也才不到10个,除非有非常多的特殊功能,否则都能用PasteForm中的表格和表单来实现!
本次的特性介绍,涉及的东西会多一些,你可以下载源码后,看看详细的,我们先来查看下各个特性的信息
需求说明
作为贴代码(https://soft.pastecode.cn/)官方主推的框架PasteForm,不仅配套了项目模板,还提供了PasteBuilder代码生成器,今日要介绍的是提供的另外一个帮助函数PasteFormHelper,主要的作用就是标记特性和反序列化Dto用!
如何引入
dotnet add package PasteFormHelper --version 24.11.8
应该是要把这个包添加到XXX.Application.Contracts子项目中!
PasteFormHelper内容
如上图所示,PasteBuilderHelper里面主要就是解析Dto的文档和特性使用的!
下方的特性列表主要是为了减少输入错误!
API案例
比如项目模板中的UserInfo
注意事宜
使用PasteFormHelper需要符合一些条件
框架
需要使用贴代码提供的框架,或者是ABPvNext的,大概如下
如上图,需要有这5个子项目,缺少其中某一个也是可以的
存放规范
表对应的数据Model存放于某一个文件夹下,比如XXXDomain.usersmodels/xxx.cs
枚举类支持
枚举类的对象要存放于XXX.Domain子项目或者XXX.Application.Contracts子项目中,否则枚举的注释读取不了
数据继承层级
查看最新的代码,层级不能超过6层,且除了基本类型,其他的都应该在当前项目中,比如你可以这么写
XXXDto:XXXListDto:XXXShort
/// <summary>
/// 递归读取文档
/// </summary>
/// <param name="_classType"></param>
/// <param name="_property"></param>
/// <param name="xmlDoc"></param>
/// <param name="_cpro"></param>
/// <param name="_index"></param>
private static void ReadSummary(Type _classType, PropertyInfo _property, XDocument xmlDoc, VoloModelProperty _cpro, int _index = 0)
{
var _pro_full = $"P:{_classType.FullName}.{_property.Name}";
//Console.WriteLine(_pro_full);
XElement typeElement = xmlDoc.Descendants("member").FirstOrDefault(member => member.Attribute("name")?.Value == _pro_full);
if (typeElement != null)
{
var _summary = typeElement.Element("summary")?.Value;
if (!String.IsNullOrEmpty(_summary))
{
_summary = _summary.Replace("\r\n", "").Trim();
_cpro.Summary = _summary;
}
}
else
{
if (_property.DeclaringType != null && _index < 6)
{
var _declartype = _property.DeclaringType;
if (_declartype.FullName != _classType.FullName)
{
var _zindex = _index++;
ReadSummary(_declartype, _property, xmlDoc, _cpro, _zindex);
}
}
}
}
更多特性见
贴代码PasteForm专题介绍
我们下期见!