How many times have you written something like this?
public string MyStringProperty
{
get
{
object s = ViewState["MyStringProperty"];
if( s == null )
{
s = "MyDefaultValue";
}
return (String)s;
}
set { ViewState["MyStringProperty"] = value; }
}
public bool MyBooleanProperty
{
get
{
object b = ViewState["MyBooleanProperty"];
if( b == null )
{
b = true;
}
return (bool)b;
}
set { ViewState["MyBooleanProperty"] = value; }
}
Wouldn't this be better?
public string MyStringProperty
{
get { return ViewState.GetValue("MyStringProperty", "MyDefaultValue"); }
set { ViewState["MyStringProperty"] = value; }
}
public bool MyBooleanProperty
{
get { return ViewState.GetValue("MyBooleanProperty", true ); }
set { ViewState["MyBooleanProperty"] = value; }
}
With C# 3.5, all you need is this extension method
internal static class MyExtensions
{
public static T GetValue<T>(this IDictionary bag, string key, T defaultValue )
{
object value = bag[key];
if( value == null )
{
value = defaultValue;
}
return (T)value;
}
Cheers