String对象我有一个类,其中我想使用字符串具有固定尺寸。 固定大小的原因是,该类“序列化”为具有固定长度的值的文本文件 。我想避免编写一个守护子句的foreach值,而让这个类处理这个。具有固定长度的C#
所以我周围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; }
不要去那里。只要抛出异常并称之为一天。 – CodesInChaos
我明白这个问题,但我不认为你想要做的是一个好的解决方案。我会尝试使用[代码织布工](https://en.wikipedia.org/wiki/Aspect_weaver)来帮助解决您所遇到的重复性代码问题。例如[Fody](https://github.com/Fody/Fody)是.net的一个很好的免费开源软件。你当然必须为它编写一个插件,使它能够做你想做的事。 –
btw,不应该是'StringTooLongException',而不是'StringToLongException'? 'StringToLong'听起来像一个转换。 – Bob