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