基本的に、基本クラスをパラメーターとして取り、派生クラスに「ジェネリック」に使用できるメソッドを作成したいと思います
ef-code-first クラス:
基本クラス
public abstract class BaseClass
{
public int Id { get; set; }
public string Name { get; set; }
}
派生クラス:
public class DerivedA:BaseClass
{
public string AValue {get;set;}
...more specific fields
}
public class DerivedB:BaseClass
{
public string BValue {get;set;}
..... more specific fields
}
これらのわずかに異なるオブジェクトで「ジェネリック メソッド」を呼び出します。
System.Data.Entity.DbSet<DerivedA> _dA....
System.Data.Entity.DbSet<DerivedB> _dB....
genericMethod(_dA.Where(a => a.Name.StartsWith("a name")))); //<-contains records
genericMethod(_dB.Where(a => a.Id==5)); //<---- contains records
両方の「場所...」にデバッグ中のレコードが含まれています ([列挙] をクリックした後)
今方法:
public string genericMethod(<IQueryable>BaseClass _myClass)
{
foreach (BaseClass c in _myClass) // <-------class is empty - no records
{
// do something usefull...
}
return someResult
}
ただし、メソッド内にある場合、レコードは含まれません。
それは可能ですか、私がやろうとしていることは...? それは理にかなっていますか?
設計時、コンパイル時、または実行時エラーはありませんが、渡されたオブジェクトにはメソッドに渡されたときにレコードが含まれていませんが、呼び出しステートメントにレコードが含まれていました。
私は何を間違えましたか?
より良いアプローチはありますか?-
2つ以上(おそらく10個)の派生クラスを操作するには、このメソッドが必要です。そのため、「ジェネリック」が必要です。
ありがとうございました!