代码之家  ›  专栏  ›  技术社区  ›  Wei Lin

如何云化两个通用参数,一个用于规范,一个用于类型推断

c#
  •  0
  • Wei Lin  · 技术社区  · 7 年前

    public static class MiniSQLHelper{
        public static object SqlQuerySingleOrDefault<TParam>(this IDbConnection cnn, string query, TParam param)
            where TParam : class 
        {
            //......
        }    
    }
    
    using (var conn = Connection){
        var result = conn.SqlQuerySingleOrDefault("select @v ", new { v = 1 }); /*Success*/
    }
    

    泛型类返回类型错误

    public static class MiniSQLHelper{
        public static T SqlQuerySingleOrDefault<T, TParam>(this IDbConnection cnn, string query, TParam param)
            where TParam : class 
        {
            //......
        }    
    }
    
    using (var conn = Connection){
        var result = conn.SqlQuerySingleOrDefault<int>("select @v ", new { v = 1 });/*CS1503 C# Argument 3: cannot convert from to 'int'*/
    }
    

    问题


    Online Test Demo| .NET Fiddle

    1 回复  |  直到 7 年前
        1
  •  1
  •   Max    7 年前

    我不知道你为什么需要 TParam

    var result2 = MiniSQLHelper.SqlQuerySingleOrDefault<int, object>("select @v ", new { v = 1 });