代码之家  ›  专栏  ›  技术社区  ›  Bruno Brant

限制属性的字符串长度

  •  3
  • Bruno Brant  · 技术社区  · 15 年前

    这个问题出现在我试图找出一个更大的问题时,为了简单起见,我省略了这个问题。

    我必须用c表示一个特定的数据结构。它是一种用于与外部系统通信的协议。因此,它有一系列具有预定义长度和整数(或其他更复杂的数据)的字符串。假设:

    SYSTEM : four chars
    APPLICATION : eight chars
    ID : four-byte integer
    

    现在,我更倾向于用字符串来表示,所以

    class Message
    {
        string System {get; set; };      // four characters only!
        string Application {get; set; }; // eight chars
        int Id {get; set; };
    }
    

    问题是:我必须确保字符串的长度不超过预定义的长度。此外,这个头实际上有十分之一的字段,这些字段会时不时地改变(我们仍在决定消息布局)。

    描述这种结构的最佳方法是什么?例如,我想使用带有数据描述的xml,并使用反射来创建一个依附于实现的类(因为我需要以编程方式访问它)。

    就像我说的,还有更多的麻烦。我有其他类型的数据类型限制字符/数字的数量…

    1 回复  |  直到 15 年前
        1
  •  8
  •   Michael Madsen    15 年前

    首先:整个长度的问题。不使用auto属性很容易解决这个问题,而是声明自己的字段并用“老式”的方式编写属性。然后,您可以在setter中验证您的需求,并抛出异常,或者在新值无效时丢弃它。

    对于正在更改的结构:如果不能直接进入并更改类,则可以编写一个解决方案,该解决方案使用字典(可能是每个要存储的数据类型一个字典)将名称与值关联起来。添加某种类型的文件(可能是xml),描述允许的字段、它们的类型和验证要求。

    但是,如果只是因为你还没有决定最终的结构而改变,我可能更喜欢改变类-如果你在部署应用程序时不需要这种动态结构,这看起来是浪费时间,因为你可能会花更多的时间比你改变班级更重要。