所以我有这个返回泛型类型的方法;接口需要此方法。泛型类型 TOutput 被限制为 List。尽管我的返回值是一个列表,但它仍然无法编译。错误仅在 return 语句处(无法转换为 TOuput)。有任何想法吗?
public class QueryCollectionDataSourceBase<TInput, TOutputType, TOutput> : IQueryCollectionDataSource<TInput, TOutputType, TOutput>
where TOutput : List<TOutputType>
{
public virtual Func<TInput, SqlParameter[]> ParameterAdapter { get; private set; }
public virtual Func<IDataRecord, TOutputType> ObjectAdapter { get; private set; }
protected QueryCollectionDataSourceBase(Func<TInput, SqlParameter[]> parameterAdapter,
Func<IDataRecord, TOutputType> objectAdapter)
{
ParameterAdapter = parameterAdapter;
ObjectAdapter = objectAdapter;
}
public TOutput Execute(TInput request)
{
using (var rdr = SqlHelper.ExecuteReader(
DatabaseConnection.ConnectionString,
CommandType.StoredProcedure,
"dbo.usp_ws_act_UserByAccountIDGet",
ParameterAdapter(request)))
{
var result = new List<TOutputType>();
while (rdr.Read())
{
result.Add(ObjectAdapter(rdr));
}
return result;
}
}
}
public interface IQueryCollectionDataSource<in TRequest, out TListType, out TOutput> : IQueryDataSource<TRequest, TOutput>
where TOutput : List<TListType>
{
Func<IDataRecord, TListType> ObjectAdapter { get; }
}