まず、これの使用は学習のためだけであり、おそらく機能的なアプリケーションでは使用されないでしょう。
オブジェクト(カスタム)DateHandler
を受け取るクラス(という名前)を作成しました。これには、文字列を受け取り、各文字を一致するように変更する関数があります。Date
例えば:
"d/m/Y"
戻ることができます"1/1/2005"
d => Day
m => Month
Y => Full Year
事前定義されていない文字は変更されないことに注意してください。
Date
クラス:
class Date
{
#region Properties
private int _Day;
private int _Month;
public int Day
{
get
{
return _Day;
}
set
{
if (value < 1)
throw new Exception("Cannot set property Date.Day below 1");
this._Day = value;
}
}
public int Month
{
get
{
return _Month;
}
set
{
if (value < 1)
throw new Exception("Cannot set property Date.Month below 1");
this._Month = value;
}
}
public int Year;
#endregion
#region Ctors
public Date() { }
public Date(int Day, int Month, int Year)
{
this.Day = Day;
this.Month = Month;
this.Year = Year;
}
#endregion
}
DateHandler
クラス:
class DateHandler
{
#region Properties
private Date Date;
private Dictionary<char, string> Properties;
private int Properties_Count;
#endregion
#region Ctors
public DateHandler()
{
Properties = new Dictionary<char, string>();
}
public DateHandler(Date Date)
: this()
{
this.SetDate(Date);
}
#endregion
#region Methods
public void SetDate(Date Date)
{
this.Date = Date;
this.SetProperties();
}
private void SetProperties()
{
this.Properties.Add('d', this.Date.Day + "");
this.Properties.Add('m', this.Date.Month + "");
this.Properties.Add('Y', this.Date.Year + "");
this.Properties.Add('y', this.Date.Year.ToString().Substring(Math.Max(0, this.Date.Year.ToString().Length - 2)));
this.Properties_Count = Properties.Count;
}
public string Format(string FormatString)
{
int len = FormatString.Length;
if (Properties.ContainsKey(FormatString[0]))
{
FormatString = FormatString.Replace(FormatString[0] + "", this.Properties[FormatString[0]] + "");
}
for (int i = 1; i < len; i++)
{
if (this.Properties.ContainsKey(FormatString[i]) && FormatString[i - 1] != '\\')
{
FormatString = FormatString.Replace(FormatString[i] + "", this.Properties[FormatString[i]] + "");
}
}
return FormatString;
}
#endregion
}
私の問題: new ごとに新しい辞書を定義する必要があり、その一致定義を指す辞書が1 つDateHandler
しかないという創造的な方法を考えようとしています。どのようにアイデアはありますか?
私の主な目標: Dictionary の 1 つのインスタンスProperties
。これは、 の複数のインスタンスからの値への参照として使用されますDateHandler
。