For example: Perhaps you have an Employee object with the properties Id, Name and Salary, of types int, string and decimal.
Here is an example of some code to populate a list of Employee objects using a generic function.
public void LoadData() { IListemployees = new List (); DataTable result = // Get data from SP foreach (DataRow row in result.Rows) { Employee employee = new Employee(); employee.Id = GetColumnData<int>("EMP_ID", row, null); employee.Name = GetColumnData<string>("EMP_NAME", row, "Unknown"); employee.Salary = GetColumnData<decimal>("EMP_SALARY", row, null); employees.Add(employee); } } /// /// Gets data from a column checks it can convert it correctly if no data or invalid casting the default /// value is returned /// ///The type of data to convert too /// The name of the column in the row /// The row containing the data /// The default value ///The data or the default value public static T GetColumnData<T>(string columnName, DataRow row, object defaultValue) { if (row.Table.Columns.Contains(columnName) && row[columnName] != DBNull.Value) { string value = row[columnName].ToString(); TypeConverter converter = TypeDescriptor.GetConverter(typeof(T)); object result = converter.ConvertFromString(value); try { return (T)result; } catch (InvalidCastException) { return (T)defaultValue; } } else { return (T)defaultValue; } }
No comments:
Post a Comment