You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C#富文本解析器的命名空间与类命名设计疑问咨询

针对你的两个技术疑问,给出实际开发中的建议:


1. Smurf命名与通用类型名的选择

如果要保留公共API并支持跨项目复用,不建议直接使用TokenTypeReader这类无前缀的通用名称。C#生态中,公共API的通用类型名极易与其他库或系统类型产生冲突,即便放在Poeoquito.Text.Parsing命名空间下,用户同时引用多个解析库时仍可能出现命名歧义。

两种可行方案:

  • 保留Rich前缀(即Smurf命名):比如RichTokenTypeRichReader,这种方式直观,能明确标识属于富文本解析体系,避免冲突,适合公共API场景。
  • 依托子命名空间隔离:将解析相关类型放到Poeoquito.Text.Parsing下,直接使用TokenTypeReader,用户通过命名空间限定(using Poeoquito.Text.Parsing;)或完整名称引用即可,这和System.Text.Json的设计思路一致,既简洁又能避免冲突。

如果后续确定解析库仅作为内部API使用,直接用简洁的通用名称完全没问题,无需考虑外部冲突。


2. 命名空间层级的合理性

当前Text下划分ParsingFormatting子命名空间的设计合理且清晰

  • Parsing专注于类HTML文本的分词、解析,生成RichDocumentRichNode等中间结构,职责单一;
  • Formatting负责将中间结构转换为可渲染的字形、文本运行,与解析逻辑完全解耦;
  • 顶层的RichTextTextStyle作为对外暴露的核心类型,与底层解析、格式化逻辑分层明确,用户无需关心内部实现,只需关注最终的富文本对象。

这种划分不属于过度复杂,反而能让代码边界更清晰,后续扩展解析规则、新增格式化逻辑时,便于维护和复用。


内容的提问来源于stack exchange,提问作者lumpalette

火山引擎 最新活动