Lit*_*ait 3 .net c# servicestack
我有一个方法,我希望传递一个SqlExpression连接字符串来加载给定类型的数据.问题是我似乎无法确定语法.我的想法是能够调用如下static方法:
OrmLiteConfig.DialectProvider = ServiceStack.OrmLite.MySqlDialect.Provider;
SqlExpressionVisitor<SampleItem> ev = OrmLiteConfig.DialectProvider.ExpressionVisitor<SampleItem>();
var result = SomeClass.Query<SampleItem>(ev, connectionString);
Run Code Online (Sandbox Code Playgroud)
使用以下方式声明的方法SomeClass:
public static List<T> Query<T>(SqlExpressionVisitor<T> ev, string connectionString)
{
IDbConnection conn = connectionString.OpenDbConnection();
var result = conn.Select<T>(ev);
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是,我调用该Select方法的方式给了我语法错误:
"错误10'T'必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法中将其用作参数'T'"
我是仿制药的新手(显然).
Ser*_*rvy 11
'T'必须是具有公共无参数构造函数的非抽象类型
因此,您需要确保T具有无参数构造函数.这仅仅意味着应用以下通用约束:
public static List<T> Query<T>(SqlExpressionVisitor<T> ev, string connectionString)
where T : new()
{ ... }
Run Code Online (Sandbox Code Playgroud)
您的班级可能已经满足条件,您只需要确保其他人不能传递不可构造的类型.
出错的原因是Select您调用的方法会添加相同的约束.您基本上保持对方法的相同要求.
| 归档时间: |
|
| 查看次数: |
597 次 |
| 最近记录: |