优雅的方式来控制字符串属性的长度

时间:2016-08-30 23:46:24

标签: c#

编辑:引用的副本不是一个选项,因为它在5年前被回答了(我6年前的参考)并且我希望有更新的东西可以做到这一点而不是手工制作解决代码问题。引用的副本也不是完全声明性的解决方案。

我有一些类的字符串属性,只允许最大长度。来自Delphi背景,您可以将自定义类型定义为:

type TString10 = string[10];
type TString50 = string[50];

然后将其用作属性定义的一部分:

property TString10 MyString
property TString10 MyOtherString
property TString50 YetOtherString
property TString50 AndTheLastOne

我知道似乎有no declarative equivalent in C#?所以看来我唯一的选择是:

  1. 编写手动属性设置器或getter(截断到指定长度)
  2. 调用检查属性的验证方法,以确保其长度符合要求
  3. 还是有其他方法可以明确地对字符串属性强制执行长度吗?

2 个答案:

答案 0 :(得分:1)

What ways can I ensure that a string property is of a particular length?

我并不完全正面,但我相信这正是你要找的。如果是的话,看起来普通的制定者和吸气者真的是最好的方法。

答案 1 :(得分:1)

我认为选项1& 2几乎涵盖了它;他们是我用过的唯一两个。

我做过的最有效的方法是创建可用于装饰属性的属性,然后使用Validation方法检查字符串长度与实际值的关系。这些类能够自我验证,因此所有内容都封装在类本身中。

这也意味着您仍然可以使用自动属性。