具有用于排序的解析属性的 C# 类

问题描述 投票:0回答:0

我想构建一个类来解析用于排序的道路编号 (RdNumber) 代码,以覆盖原始值的默认字母数字排序。原始 RdNumber 代码的示例及其升序排序方式是:

M1010 M10230 M10230A M1234 M1234A M1234B M12456 M12456A M1265 M1265A S4056 S4056A

我想创建一个具有属性的类,该类获取原始 RdNumber 并将其解析为前缀、4 或 5 位整数数值和可选后缀的三个额外的独立属性,以便我可以实现一个 IComparer 来对基于这些附加属性的值:

M 1010 M1010 M 1234 M1234 M 1234 A M1234A M 1234 B M1234B M 1265 M1265 M 1265 A M1265A M 10230 M10230 M 10230 A M10230A M 12456 M12456 M 12456 A M12456A S 4056 S4056 S 4056 A S4056

我不确定设置这些属性的获取和设置实现的最佳方法是什么。似乎唯一需要具有公共 get 和 set 方法的属性是原始 RdNumber 属性。此属性的设置应触发类内部其他 3 个属性的设置。那么其他 3 个属性将只有一个 public get 方法来实现排序。暂且不谈 IComparer 的实现,应该如何设置这 4 个属性,以便分配 RdNumber 属性并进行解析,以便返回其他 3 个属性?

可以假设有效 RdNumber 的最小字符数为 5,最大字符数为 7。对于解析,所有有效 RdNumbers 都以单个字符前缀开头,后跟至少 4 个整数数字。仅包含 5 个字符的 RdNumber 将始终包含一个 4 位整数数值并且没有后缀(使用“”作为后缀)。长度为 7 个字符的有效 RdNumber 将始终包含一个 5 位整数数值和一个后缀(单个字母)。具有 6 个字符的 RdNumber 可以具有 4 位整数数值和字母后缀值,也可以具有 5 位整数数值但没有后缀值(“”)。

感谢您的帮助。

我已经尝试阅读有关如何设置内部属性的示例,但我不确定我是否理解如何设置它以便属性变量的范围对于内部设置属性的 set 和 get 方法是一致的。无论如何,我担心我正在看的例子可能会使我实际需要完成的事情过于复杂。

class parsing properties internals
© www.soinside.com 2019 - 2024. All rights reserved.