我有一个类,在其中我想使用长度固定的字符串。这么做的原因是该类会“序列化”为一个文本文件,并且每个值都需要具有固定的长度。我希望避免为每个值编写守卫子句,而是让类来处理。
因此,我大约有30个属性,看起来像这样
public String CompanyNumber
{
get
{
return m_CompanyNumber.PadLeft(5, ' ');
}
set
{
if (value.Length > 5)
{
throw new StringToLongException("The CompanyNumber may only have 5 characters", "CompanyNumber");
}
m_CompanyNumber = value;
}
}
我希望有一个字符串可以自行处理这个问题。目前我有以下内容:
public class FixedString
{
String m_FixedString;
public FixedString(String value)
{
if (value.Length > 5)
{
throw new StringToLongException("The FixedString value may consist of 5 characters", "value");
}
m_FixedString= value;
}
public static implicit operator FixedString(String value)
{
FixedString fsv = new FixedString(value);
return fsv;
}
public override string ToString()
{
return m_FixedString.PadLeft(5,' ');
}
}
我对这个解决方案的问题在于,我不能在“编译时”设置字符串的长度。
如果最终它能看起来像这样就太理想了。
public FixedString<5> CompanyNumber { get; set; }
StringTooLongException
而不是StringToLongException
吗?StringToLong
听起来像是转换。 - Bobnew StringBuilder() { MaxCapacity = 5 }
。 - Slai