Is it possible to return a generic type using extension methods?
For example, I have the following method:
// Convenience method to obtain a field within a row (as a double type)
public static double GetDouble(this DataRow row, string field) {
if (row != null && row.Table.Columns.Contains(field))
{
object value = row[field];
if (value != null && value != DBNull.Value)
return Convert.ToDouble(value);
}
return 0;
}
This is currently used as follows:
double value = row.GetDouble("tangible-equity");
but I would like to use the following code:
double value = row.Get<double>("tangible-equity");
Is this possible and if so, what would the method look like?
How about this one:
public static T Get<T>(this DataRow row, string field) where T: IConvertible
{
if (row != null && row.Table.Columns.Contains(field))
{
object value = row[field];
if (value != null && value != DBNull.Value)
return (T)Convert.ChangeType(value, typeof(T));
}
return default(T);
}
Convert.ChangeType is much more flexible handling conversions as opposed to just casting. This pretty much reflects your original code, just generic.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With