私はc#を初めて使用し、GenericsとEntityFrameworkと少し混同しています。データベースに2つのテーブルがあり、EntityFrameworkを使用してコードで取得します。私のaspxページには、ユーザーが選択したテーブルに基づいてデータを入力するグリッドがあります。
将来的にはさらに多くのテーブルがあります。そこで、データグリッドのソースリストを取得するためのファクトリパターンを作成したいと思いました。私は非常に混乱しているので、それを機能させることができません。
これがBaseClassと2つの子クラスの私のコードです。
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();
}
}
誰かがそれに応じてコードを修正できますか?ここでジェネリックを使用する必要がありますか?BaseClassで使用してみましたが、それに応じて子クラスを修正する必要があるため、正しく機能しません。これについては、手がかりがありません。