Friday, March 11, 2011

Dynamic Sugar # Library's Format Method - Another Sample

Here is another example of the Dynamic Sugar # Library's Format Method.
  1. First we have 2 classes, which overrides the ToString() method and use the Format method as defined as an extension method.
  2. The ToString() method from class Person, will invoke the property DrivingLicenses which will trigger the ToString() method of the class License.
  3. This example shows how the method Format(), format List<T>.

You can see my screencast.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DynamicSugarSharp;

namespace ScreenCastConsole {

    public class License {

        public DateTime Date;
        public string   Type;

        public override string ToString() {
            return this.Format("Type:{Type} - Date :{Date:yyyy-MM-dd}");
        }
    }
    public class Person {

        public string        LastName  { get; set; }
        public string        FirstName { get; set; }
        public DateTime      BirthDate { get; set; }
        public List<License> DrivingLicenses = null;

        public override string ToString() {
            var format = @"
Name            :{LastName}, {FirstName}
BirthDate       :{BirthDate:yyyy-MM-dd}
DrivingLicenses :{DrivingLicenses}        
";
            return this.Format(format);
        }
    }
    public static class ExtensionMethods {

        public static string Format(this Person person, string format, params object[] args) {
            return ExtendedFormat.Format(person, format, args);
        }
        public static string Format(this License person, string format, params object[] args) {
            return ExtendedFormat.Format(person, format, args);
        }
    }
    class Program {

        static void Main(string [] args) {

            var p = new Person(){
                LastName        = "TORRES",
                FirstName       = "Frederic",
                BirthDate       = new DateTime(1964, 12, 11),
                DrivingLicenses = DS.List(
                    new License() { Date = new DateTime(1983, 1, 2), Type = "Cars"      },
                    new License() { Date = new DateTime(1985, 4, 5), Type = "MotoBike"  }
                )
            };
            Console.WriteLine(p.ToString());            
            Console.WriteLine("Hit enter to end the application");
            Console.ReadLine();
        }
    }
}


Here is this output
Name            :TORRES, Frederic
BirthDate       :1964-12-11
DrivingLicenses :[Type:Cars - Date :1983-01-02, Type:MotoBike - Date :1985-04-05]

Hit enter to end the application

No comments:

Post a Comment