Scott Hanselmanさんが、おもしろいアイディアを形にしてくれました。


[Test]


public void MakePersonFormattedStringWithFormat()


{


    Person p = new Person();


    string foo = p.ToString(”{BirthDate:D} My name is {FirstName} {LastName} and I’m cool.”);


    Assert.AreEqual(”Tuesday, January 22, 1974 My name is Scott Hanselman and I’m cool.”, foo);


}


 


つまり、p.BirthDate.ToString()やp.FirstNameのようにしなくても括弧でプロパティ名を囲むことによってその値をアウトプットしてくれるものです。ソースコードがダウンロード可能になっています。


 


更新:コメントにScottさんから「日本語でも動くか確かめて、教えてくれない?」とありましたので、検証してみました。日本語環境でもきちんと動くようです。JapanesePersonというクラスをPersonから継承して「都道府県」というプロパティを作成してみました。それもちゃんと動くようです。It works well with Japanese characters too, Scott!


 


ObjectToString.gif


 


下記のコードのようにCultureInfoをja-JPにしてやると日にちが日本語でも出力可能です。


        [Test]
        public void MakePersonFormattedStringWithFormatAndChineseCulture()
        {
            Person p = new Person();
            string foo = p.ToString(“{BirthDate:D} My name is {FirstName} {LastName} and I’m cool.”,new System.Globalization.CultureInfo(“ja-JP”));
            Assert.AreEqual(“1974年1月22日 My name is Scott Hanselman and I’m cool.”, foo);
        }


 

コメント書き込み