У меня есть класс, в котором я хочу использовать строки с фиксированным размером. Причиной фиксированного размера является то, что класс "сериализуется" в текстовый файл со значениями с фиксированной длиной. Я хочу избежать, чтобы написать foreach значение в качестве предложения охраны и вместо этого обработать класс.
Итак, у меня есть около 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;
}
}
Я хотел бы иметь String, который обрабатывает это сам по себе. В настоящее время у меня есть следующее:
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; }