public static object ConvertIfOverriding(CustomVariable cv, object valueToSetTo)
{
if (!string.IsNullOrEmpty(cv.OverridingPropertyType))
{
switch (cv.Type)
{
case "string":
switch (cv.OverridingPropertyType)
{
case "int":
case "long":
{
// In .NET 4 we can do this:
//return valueToSetTo.ToString("n0");
// but for .NET 3 we gotta:
string s = valueToSetTo.ToString();
int asInt = 0;
asInt = (int)System.Convert.ChangeType(valueToSetTo, typeof(int)) ;
if (cv.TypeConverter == "Comma Separating")
{
for (int p = s.Length - 3; p > 0; p -= 3)
{
s = s.Insert(p, System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator);
}
}
else if (cv.TypeConverter == "Minutes:Seconds")
{
s = string.Format("{0}:{1}", (asInt / 60).ToString("D1"), (asInt % 60).ToString("D2"));
}
return s;
//break;
}
case "float":
{
string s = valueToSetTo.ToString();
float asFloat = (float)valueToSetTo;
if (cv.TypeConverter == "Comma Separating")
{
s = string.Format("{0:n}", asFloat);
//s = asFloat.ToString("n0");
}
else if (cv.TypeConverter == "Minutes:Seconds.Hundredths")
{
s = string.Format(
"{0}:{1}{2}",
((int)asFloat / 60).ToString("D1"),
((int)asFloat % 60).ToString("D2"),
((float)asFloat - (int)asFloat).ToString(".00"));
}
return s;
}
}
break;
}
return valueToSetTo;
}
else
{
return valueToSetTo;
}
}