注: .NETパッドコードはこちら。
ジェネリック型パラメーターを受け取る基本クラスがあります。
ベースを形成する各クラスには、これのみで構成される対応するコレクションクラスがあります。
public class List_SomeType : List<SomeTime> {
public List_SomeType() {
}
}
それだけです:それはList<T>コンテナだけです。
ただし、メソッドの1つがこのコレクションを返すことであるため、基本クラスで問題が発生しています。
次のGetメソッドを作成してみましたが、これは私にとって完全に理にかなっています。
public TList Get() {
var list = new TList();
using (var cmd = new SqlCommand(SP_GET, m_openConn)) {
cmd.CommandType = CommandType.StoredProcedure;
using (var r = cmd.ExecuteReader()) {
while (r.Read()) {
list.Add(FillDataRecord(r));
}
}
cmd.Connection.Close();
}
return list;
}
public class TList : List<T> {
public TList() { }
}
私の派生クラスでは、この基本クラスを次のように呼び出すことを計画しました。
public class BuyerDB : DAL_Base<Buyer> {
private static BuyerDB one;
static BuyerDB() {
one = new BuyerDB();
}
public static BuyerList GetBuyerList() {
return (BuyerList)one.Get(); // <= ERROR HERE!
}
}
ここでのエラーは次のように述べています。
タイプ「DAL_Base.TList」を「BuyerList」に変換できません
ジェネリック型のコレクションに戻すにはどうすればよいですか?
編集:
マークは何BuyerList
であるか知りたがっています。
それは私が書いたものから理解できたと思いました。
どうやらそうではないので、ここにあります:
public class BuyerList : List<Buyer> { }
それで全部です!