#asp.net-core #dynamic #asp.net-dynamic-data
Вопрос:
У меня в базе данных есть три таблицы (Студент, Курс, Все). Когда я добавляю какие-либо данные в таблицу «Студент и курс», данные также добавляются во все таблицы.
Итак, я использую данные динамического типа для передачи данных типа «Студент» и «Курс» для сохранения во всей таблице.
public IActionResult Add(Student model)
{ ...
bool studentData = _studentService.Add(model); //saving in Student table
bool allData= _allService.AddAll(model); // passing 'Student' type data
...
}
В службе » Все » у меня есть такая функция, как-
public bool AddAll(dynamic model) // 'Student' type data passed amp; received as dynamic
{...}
Теперь мне нужна подробная информация о типе модели студента (название таблицы, общее количество найденных данных и т.д.).
Есть ли какой-нибудь способ получить его? И можно ли получить информацию о типе модели студента или курса, если я использую динамический тип данных?
Любое предложение или помощь будут высоко оценены 🙂 Заранее спасибо!
Ответ №1:
Если вы хотите получить тип модели,вы можете использовать model.GetType()
,и вы можете использовать model.GetType().Name
,чтобы получить имя типа модели, вот демонстрационная версия:
Модель:
public class Student
{
public int StudentId { get; set; }
public string StudentName { get; set; }
}
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
}
Экшен:
public void Add(Student model)
{
//Student s = new Student { StudentId=1, StudentName="s1" };
Course c = new Course { CourseId=1,CourseName="c1" };
bool allData = AddAll(c);
}
public bool AddAll(dynamic model)
{
var type = model.GetType();
var typeName = type.Name;
return true;
}
Ответ №2:
Этот пример демонстрирует, что вы пытаетесь сделать ?
// Some dummy classes
public class Student
{
public string Name { get; set; }
public Student(string name)
{
Name = name;
}
}
public class Course
{
public string Title { get; set; }
public Course(string title)
{
Title = title;
}
}
// put the method somewhere
private string TypeCasting(dynamic myContent)
{
if (myContent is Student littleStudent)
{
return littleStudent.Name;
}
if (myContent is Course someLovelyCourse)
{
return someLovelyCourse.Title;
}
return string.Empty;
}
// Example using
var student = TypeCasting(new Student("fossil"));
var course = TypeCasting(new Course("type casting"));