Да, вы могли бы сделать что-то подобное. Проблема в том, что вы не сможете получить доступ к переменным FirstName
, LastName
или Email
. Что вы должны сделать, это создать класс, подобный следующему
public class BaseClass
{
public string FirstName;
public string LastName;
public string Email;
}
Теперь пусть ваши RegisterViewModel
и TeamUserViewModel
расширяют этот класс следующим образом:
public class RegisterViewModel : BaseClass
{
// specialized information here
}
Теперь в вашей новой функции Вы можете указать тип T
, например,
public static AppUser Create<T>(T model) where T : BaseClass
{
// Stuff here
}
, и теперь у вас будет доступ к каждой из этих переменных / методов, определенных в BaseClass
. Преимущество заключается в том, что каждый из ваших расширенных классов не ограничивается только этими несколькими переменными.
Кроме того, если вы хотите выполнить специализированные логи c для каждой модели, вы можете сделать следующее:
if(typeof(T) == typeof(TeamUserViewModel))
{
// Perform action
}
else if (typeof(T) == typeof(RegisterViewModel))
{
// Perform different action
}