Я сделал этот класс:
public class ConcreteList<T> : ReadOnlyList<T, ConcreteList<T>> where T: ReadOnlyRecord<T>, new()
{
public ConcreteList() { }
}
изменил этот код:
public static ConcreteList<T> results2<T>(T searchCriteria)
where T : ReadOnlyRecord<T>, new()
{
using (IDataReader results = ReadOnlyRecord<T>.Find(searchCriteria))
{
ConcreteList<T> a = new ConcreteList<T>();
a.Load(results);
return a;
}
}
и я могу назвать это так:
Animal searchCriteria = GetSearchCritera();
ConcreteList<Animal> results = results2(searchCriteria);
О да, я хотел, чтобы это был метод расширения:
public static class ReadOnlyRecordExtensions
{
public static ConcreteList<T> ExecuteFind<T>(this T searchCriteria)
where T : ReadOnlyRecord<T>, new()
{
using (IDataReader results = ReadOnlyRecord<T>.Find(searchCriteria))
{
ConcreteList<T> list = new ConcreteList<T>();
list.Load(results);
return list;
}
}
}