Posts
208
Comments
1144
Trackbacks
51
C# 3.0 Extension Methods - Real World Example

C# 3.0 Lambda Expressions play an integral part of making the LINQ framework work.  Outside of LINQ it is recommended that they be used sparingly because they are less "discoverable."  However, there are a couple of nice scenarios where extension methods have good potential to make your code more elegant as a stand-alone language enhancement.

Take an example where you have a nullable value in the database and you represent this as a Nullable<DateTime> on your C# object (e.g., EmploymentEndDate).  When you go to save this value back to the database, you want to save a DateTime value (if one exists), otherwise you want to save a null to the database - specifically a DBNull.Value.  With C# 2.0 you'd have to write a static method like this:

public static object ToDBValue<T>(Nullable<T> nullable) where T : struct
{
    if (nullable.HasValue)
    {
        return nullable.Value;
    }
    else
    {
        return DBNull.Value;
    }
}

and call it like this (note the line below is EntLib rather than straight ADO.NET but that's immaterial to this example):

db.SetParameterValue(cmd, Params.EmplEndDate, DBUtil.ToDBValue(person.EmploymentEndDate));

With C# 3.0 you can convert the static method to an extension method by simply adding the this modifier to the first parameter like this:

public static object ToDBValue<T>(this Nullable<T> nullable) where T : struct
{
    if (nullable.HasValue)
    {
        return nullable.Value;
    }
    else
    {
        return DBNull.Value;
    }
}

Which allows you to call the method like this:

db.SetParameterValue(cmd, Params.EmplEndDate, person.EmploymentEndDate.ToDBValue());

This syntax is much more intuitive and concise.

 

posted on Wednesday, August 29, 2007 9:26 PM Print
Comments
No comments posted yet.

Post Comment

Title *
Name *
Email
Comment *  
Verification

View Steve Michelotti's profile on LinkedIn

profile for Steve Michelotti at Stack Overflow, Q&A for professional and enthusiast programmers




Google My Blog

Tag Cloud