限制属性上的字符串长度

Bru*_*ant 3 c# reflection

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

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

SYSTEM : four chars
APPLICATION : eight chars
ID : four-byte integer
Run Code Online (Sandbox Code Playgroud)

现在,我表示这个的首选方法是使用字符串,所以

class Message
{
    string System {get; set; };      // four characters only!
    string Application {get; set; }; // eight chars
    int Id {get; set; };
}
Run Code Online (Sandbox Code Playgroud)

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

如何描述这种结构的最佳方式?我想,例如,使用带有数据描述的XML并使用反射来创建一个遵循实现的类(因为我需要以编程方式访问它).

而且,就像我说的那样,还有更多麻烦.我有其他类型的数据类型,限制字符/数字的数量......

Mic*_*sen 8

对于初学者:全长问题.这很容易通过不使用自动属性来解决,而是声明自己的字段并以"老式"方式编写属性.然后,您可以在setter中验证您的需求,并抛出异常或丢弃新值(如果它无效).

对于不断变化的结构:如果不可能只是进入并改变类,你可以编写一个解决方案,它使用一个Dictionary(好吧,也许你想存储一个数据类型)来将一个名字与一个值相关联.添加某种文件(可能是XML),描述允许的字段,类型和验证要求.

但是,如果它只是因为你尚未确定最终结构而改变,我可能更愿意只更改类 - 如果你在部署应用程序时不需要那种动态结构,那么它似乎是浪费时间,因为你可能最终花费更多的时间来编写动态的东西,而不是改变你的课程.