Inspired by Python, I wanted to extend the .NET string.format() method so I can write the following C# code.
public class Person {
public string LastName;
public string FirstName { get ; set ; }
public int Age { get ; set ; }
public DateTime BirthDay { get ; set ; }
}
static void Main(string [] args) {
var person = new Person () { LastName = "TORRES" , FirstName = "Frederic" , Age = 45, BirthDay = DateTime .Parse("1964-12-11" ) };
Console.WriteLine(person.Format("{0} LastName:{LastName}, FirstName:{FirstName}" , DateTime .Now));
}
Without the extension method.
class Program {
static void Main(string [] args) {
var person = new Person () { LastName = "TORRES" , FirstName = "Frederic" , Age = 45, BirthDay = DateTime .Parse("1964-12-11" ) };
Console.WriteLine(ExtendedFormat.Format(person, "LastName:{LastName}, FirstName:{FirstName}" ));
// Combine extended and default mode
Console.WriteLine(ExtendedFormat.Format(person, "{0} LastName:{LastName}, FirstName:{FirstName}" , DateTime .Now));
}
}
The ExtendedFormat.Format() fall back on the string.Format() method and therefore it is 100% compatible. Basically The ExtendedFormat.Format() add the tag {property-name} to call a property or field of the instance passed.
I also added the ability to call a function with no parameter with the syntax{MyFunction()}.
Next Steps
I will look at different template class in Python. I sometime need a little bit more for than just the simple format.
I will add the source code to codeplex.com.
No comments:
Post a Comment