Строковый объект с фиксированной длиной C #
У меня есть класс, в котором я хочу использовать строки с фиксированным размером. Причина фиксированного размера заключается в том, что класс «сериализуется» в текстовый файл со значениями фиксированной длины. Я хочу не писать в foreach значение аргумента guard и вместо этого иметь класс, обрабатывающий это.
Итак, у меня около 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; }