Пытаясь создать универсальный класс, чтобы иметь возможность уменьшить избыточность в моем коде на c #, у меня есть 4 класса, которые более или менее используют одни и те же методы (добавление, получение, редактирование, удаление). Однако, когда я запрашиваю свою базу данных через сущностьрамки я получаю эту ошибку."невозможно перевести из 'T' в 'SneakerDrop.Domain.Models.User', и что 'T' не содержит свойств UserId
. Я преобразовал класс из статического, чтобы иметь возможность создать новыйэкземпляр в программе, чтобы проверить, если это потому, что я пытаюсь передать новый тип данных через xUnit.
public class Program
{
public User user = new User
{
UserId = 1,
Username = "ian2519",
Password = "Password",
Firstname = "Ian",
Lastname = "Nai",
Email = "Email@email.com"
};
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
UserHelper<User> test = new UserHelper<User>();
Program program = new Program();
test.AddUser(program.user);
}
public class UserHelper<T>
{
private SneakerDropDbContext _db = new SneakerDropDbContext();
public bool AddUser(T user)
{
_db.Users.Add(user);
return _db.SaveChanges() == 1;
}
public T GetUserInfoById(T user)
{
T dbInfo = _db.Users.Where(u => u.UserId == user.UserId).FirstOrDefault();
return dbInfo;
}
public bool EditUserInfoById(T user)
{
var results = _db.Users.Where(u => u.UserId == user.UserId).FirstOrDefault();
results.Username = user.Username;
results.Firstname = user.Firstname;
results.Lastname = user.Lastname;
results.Password = user.Password;
results.Email = user.Email;
_db.SaveChanges();
return true;
}
}
получая ошибку, что T не может преобразовать из T на _db.USers.Add (user) и получая Tне содержит определения имени пользователя, имени и т. д. в строках results.Username, results.Firstname ...