私はDALのオブジェクトのジェネリックコレクションを作成しようとしていますが、実際にはプロダクションコードではありません。私の問題は、渡された型のReadメソッド(クラスが実装するインターフェイスの一部)を使用したいということです。ジェネリックコレクションのロード汎用タイプ
new T
を作成することはできません。そのため、オブジェクトのインスタンスは使用できません。ベースオブジェクトの子によって指定された読み取りメソッドが必要なので、ベースタイプとして宣言できません。
これは実際に可能ですか、間違ったツリーを吠えていますか?
public class ItemDictionary<T> where T : ILoadable, DataItem
{
public void Load()
{
using (IDataReader reader = SqlHelper.ExecuteReader(_connection, CommandType.StoredProcedure, _proc)) {
Read(reader);
}
}
bool Read(IDataReader reader)
{
while (reader.Read)
{
T item = default(T); //Here be the problem
if (item.Read(reader))
{
this.Add(item.Guid, item);
}
}
return true;
}
}
public class ExampleObject : DataItem, ILoadable
{
bool Read(IDataReader reader)
{
_var1 = reader.getString(0);
_var2 = reader.getString(1);
_var3 = reader.getString(2);
return true;
}
}
私は行方不明でした! VB.netでも働いています:) – Pondidum