Динамическая передача универсального объекта
Я пытаюсь динамически отображать таблицу в зависимости от того, какое имя таблицы пользователь выбрал из выпадающего списка. Я передаю объект json из моего веб-контроллера(.Net Core), поэтому для этого я сначала преобразую свой dataTable в список объектов с помощью функции
public static List<T> ConvertTableToList<T>(this DataTable table) where T : class, new() { try { List<T> list = new List<T>(); foreach (var row in table.AsEnumerable()) { T obj = new T(); foreach (var prop in obj.GetType().GetProperties()) { try { PropertyInfo propertyInfo = obj.GetType().GetProperty(prop.Name); propertyInfo.SetValue(obj, Convert.ChangeType(row[prop.Name], propertyInfo.PropertyType), null); } catch(Exception ex) { throw ex; } } list.Add(obj); } return list; } catch { return null; } }
и вызовите эту функцию в моем запросе Get
public IActionResult GetTableDetailsByTableName(string TableNameSelected) { //To get the data for the Table Selected DataTable TableDetails = ReferenceTableLogics.getTableDetails(TableNameSelected); var TableDetailsInList = ConverterClass.ConvertTableToList<CSBM_AGE_BAND>(TableDetails); return Ok(TableDetailsInList); }
Теперь проблема заключается в том, что мне нужно сообщить свое имя класса (например, CSBM_AGE_BAND в данном случае) в зависимости от того, что пользователь выбрал в выпадающем списке (TableNameSelected).
Есть ли какой-нибудь способ, с помощью которого я могу динамически передать это имя класса моей функции ConvertTableToList() ?
Что я уже пробовал:
Я попытался сделать это путем размышления, но это не очень помогло.
Я также хотел бы знать, существует ли в .net core какая-либо функция, которая может напрямую конвертировать dataset в объект json (попробовал JsonConvert.SerializeObject, но не смог получить доступ к нему с помощью typescript). Вот как я получаю информацию на стороне клиента.
getTableColumnDetailsByTableName(TableName: string): void { this.coverMeService.getTableColumnDetailsByTableName(TableName) .subscribe(data => { this.TableColumnDetails = data; } ); }