尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【编程】(1)-跨平台跨语言C#、Java、鸿蒙ArkTS三端通用实体接口

【编程】(1)-跨平台跨语言C#、Java、鸿蒙ArkTS三端通用实体接口 【编程】(1)-跨平台跨语言C#、Java、鸿蒙ArkTS三端通用实体接口咏方舟-长江支流 2026-07-20前言最近在做一个轻量级框架准备开源发布到Git 以及csdn代码仓 https://gitcode.com/ZeroORM 先在csdn上首发把实现整理一遍。最初想做到跨平台——用 .NET Standard 2.0只引用 System.Text.Json它能用于 .NET 各种框架也能编译运行在各大操作系统平台。但跨语言呢我选择了 C# 7.3不超过 C# 8 语法应用基本数据类型。当然像ListT这种会有应用技巧后面会说。核心设计在三个语言中都有对应的实现方式且语义完全一致。下面设计 C# 接口拷到 Java、ArkTS 保持接口和类型完全一致因此从一个开发语言转到另一个开发语言移植时基本不用改业务代码大家只要记得一句话鸿蒙ArkTS来自TypeScript而TypeScript是c#之父安德斯负责的所以基本上c#代码拷过去直接用但是要注意细节。C# 端usingSystem;namespaceUserBaoTech.Foundation.Entities{/// summary/// 作者长江支流 https://github.com/zeroorm、https://gitcode.com/ZeroORM/// 实体接口IEntity是用宝框架的底层保留ID做增删改的契约表示该类是一个领域实体,实体基接口所有领域实体必须实现。///当然泛型设计不仅让主键可以是字符、数字、GUID也可以支持组合主键。/// Java、鸿蒙、c#三端通用。/// /summary/// typeparam nameTKey主键类型/typeparampublicinterfaceIEntityTKey{TKeyId{get;set;}}/// summary/// 默认主键为 string 的实体接口大部分场景使用/// /summarypublicinterfaceIEntity:IEntitystring{}}Java 端packagecom.userbaotech.foundation.entities;/** * 实体接口 IEntity 是框架的底层保留 ID 做增删改的契约。 * 泛型设计主键可以是 String、Integer、Long、UUID 或自定义复合类型。 * C#、Java、鸿蒙 ArkTS 三端通用。 */publicinterfaceIEntityTKey{TKeygetId();voidsetId(TKeyid);}/** * 默认主键为 String 的实体接口 */publicinterfaceIEntityextendsIEntityString{}鸿蒙 ArkTS 端注意鸿蒙ArkTS就不要这么写的ArkTS要接口、类、方法上支持默认处理方式。动动手试试吧实践最重要。/** * 实体接口 IEntity 是框架的底层保留 ID 做增删改的契约。 * 泛型设计主键可以是 string、number、UUID 或自定义复合类型。 * C#、Java、鸿蒙 ArkTS 三端通用。 */exportinterfaceIEntityTKey{id:TKey;}/** * 默认主键为 string 的实体接口 */exportinterfaceIEntityextendsIEntitystring{}ArkTS 也支持默认泛型参数并且支持默认参数exportinterfaceIEntityTKeystring{id:TKey;}设计要点特性说明泛型主键支持string、int、long、Guid甚至自定义复合主键类型默认字符串主键IEntity : IEntitystring覆盖 95% 以上场景无需显式指定泛型参数三端一致接口名、属性名、方法名三端完全相同移植时只改语法符号最小契约只保留Id不包含CreatedAt、UpdatedAt、IsDeleted等系统字段由业务层按需扩展跨语言移植C# 代码直接复制到 Java/ArkTS接口定义不改只改语法为什么只保留IdIEntityTKey是整个数据访问层的基石契约——增删改查必须有主键这是数据操作的最基本要求。把CreatedAt、UpdatedAt、IsDeleted移出基接口是为动态实体如 XML 驱动的实体留出完全自由的扩展空间。如果基接口包含了这些字段动态实体就不得不“假装”拥有它们即使它们并不存在于 XML 配置中。只保留Id意味着任何实现了IEntityTKey的类无论它是静态实体还是动态实体都可以无缝接入用宝框架的增删改查体系。后续预告三端通用接口系列持续更新第(1)篇三端通用实体接口IEntityTKey✅第(2)篇三端通用ORM提供者接口IOrmProviderTKey✅第(3)篇三端通用数据字典接口IDataDictionary第(4)篇三端通用数据列表接口IDataList第(5)篇三端通用数据访问执行器IDataAccessExecutor敬请关注。本文链接https://blog.csdn.net/flygoldfish/article/details/163055422?spm1001.2014.3001.5501 欢迎转载。–
返回列表