Я новичок в C# и теперь немного запутался с Generics и Entity Framework. У меня есть две таблицы в базе данных, которые я извлекаю в своем коде с помощью Entity Framework. На моей странице aspx у меня есть сетка, которая должна заполнять данные на основе того, какой пользователь выбирает таблицу.Confuse with Generics and Entity Framework
В будущем будет больше таблиц. Поэтому я хотел написать шаблон фабрики, чтобы получить исходный список для datagrid. Я не могу заставить его работать, потому что я очень смущен.
Вот мой код для BaseClass и двух дочерних классов.
static class Factory
{
public static ReportBase GetReport(string name)
{
switch (name)
{
case "Child1":
return new Child1();
case "Child2":
return new Child1();
default:
return null;
}
}
}
//Base Class
class ReportBase<T>
{
public List<T> _list;
public abstract void Load();
public abstract List<T> Filter(DateTime statrtDate, DateTime endDate);
}
//Child 1
class Child1 : ReportBase
{
public List<GetChild1> _list;
public Child1(){}
public override void Load()
{
//GetChild1 is the name of database table
var info = from p in Context.GetChild1 select p;
_list = info.ToList();
}
public List<GetChild1> Filter(DateTime startDate, DateTime endDate)
{
var filteredValues = from p in _list where p.UploadedDate <= startDate select p;
return filteredValues.ToList();
}
}
//Child 2
class Child2 : ReportBase
{
public List<GetChild2> _list;
public Child2() { }
public override void Load()
{
//GetChild2 is the name of database table
return (from p in Context.GetChild2 select p).ToList();
}
public List<GetChild2> Filter(DateTime startDate, DateTime endDate)
{
return (from p in _list where p.UploadedDate <= startDate select p).ToList();
}
}
Возможно, кто-то исправит код соответствующим образом? Должен ли я использовать Generics здесь? Я попытался использовать его в BaseClass, но он не работает должным образом, потому что мне нужно соответствующим образом исправить мои дочерние классы, для которых у меня нет подсказки.
Я не смотрел на это подробно, но у вас есть опечатка в: "case" Child2 ": return new Child1();" –