“T”必须是具有公共的无参数构造函数的非抽象类型,才能用作泛型类型或方法

在创建架构提取公共方法时,发生了这个错误

public class BaseDal<T> where T:class
    {
        private readonly SqlSugarClient _db = SqlSugarFatory.GetInstance();

        #region 插入方法

        /// <summary>
        /// 插入并返回受影响行数用ExecuteCommand
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public int Add(T model)
        {
            //忽略该字段的插入
            _db.IgnoreColumns.Add("id", "t_sys_user");
            var result = _db.Insertable(model).ExecuteCommand();
            return result;
        }

解决办法:原有是T的约束没有加new()

public class BaseDal<T> where T:class,new()

原文地址:https://www.cnblogs.com/tanfuchao/p/9025725.html

时间: 2024-10-10 04:58:13

“T”必须是具有公共的无参数构造函数的非抽象类型,才能用作泛型类型或方法的相关文章

.Net Framework 4.5.1 ASP.NET MVC 5 下新建视图报“错误 运行所选代码生成器时出错 无法检索元数据 没有为该对象定义无参数构造函数”

当在控制器中新建视图的时候,选择的视图界面如下: 执行添加后报如下错误: 错误的内容为: 错误运行所选代码生成器时出错 无法检索"XXX"的元数据没有为该对象定义无参数构造函数 Unable to retrieve metadata for 'XXX'. No parameterless constructor defined for this object. 这个错误一直误导我,以为是模型类的问题,找了半天找不到解决方法,郁闷到死,后来发现是数据上下文的问题. 想到解决方案使用的是D

C++ 没有合适的默认构造函数(无参数构造函数)

本来今天吧,想写一个proxy class的范例,写着写着出了个问题,见如下代码 const int _cap = 10; Array1D* _elemArray = new Array1D[_cap]; 同时我为Array1D这个类写了一个构造函数来顶替编译器自动生成的 Array1D(int inx) { _elemNum = new T[inx]; } 随后报错,提示没有合适的默认构造函数,但是显然,我这里是提供了一个构造函数的,那么问题就出在现有的构造函数不能应对上面的new语句 联系v

C++构造函数的自动调用(调用一个父类的构造函数,有显性调用最好,否则就默认调用无参数的构造函数)——哲学思想:不调用怎么初始化父类的成员数据和VMT?

我总是记不住构造函数的特点,关键还是没有领会那个哲学思想:父类的构造函数一方面要初始化它自己的成员数据,另一方面也要建立它自己的VMT呀!心里默念一百遍:一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VM

httpclient发送无参数的post数据

两个问题: 1.httpclient如何发送一个没有任何参数的post数据呢? 2.Web工程如何去接收一个无参数的post呢? 起因: 今天(2014.11.10)在开发中碰到了一个问题,接口提供方提供的接口是要求使用post方式发送数据的,心想这不超简单的一个东西吗?直接post过去不就是了,但是,提供的接口是没有任何参数的,不是类似这种http://api.dutycode.com/data/parm=xxx这种接口,而是http://api.dutycode.com/data.这个地址直

C#控制台基础 返回类型为void的无参数委托与匿名方法

1 code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication2 8 { 9 //返回类型为void的无参数委托 10 public delegate void MyFirst(); 11 class Program 12 { 13

Java基础---Java中无参数带返回值方法的使用(三十七)

Java 中无参带返回值方法的使用 如果方法不包含参数,但有返回值,我们称为无参带返回值的方法. 例如:下面的代码,定义了一个方法名为 calSum ,无参数,但返回值为 int 类型的方法,执行的操作为计算两数之和,并返回结果 在 calSum( ) 方法中,返回值类型为 int 类型,因此在方法体中必须使用 return 返回一个整数值. 调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理.如: 运行结果: 不容忽视的"小陷阱&

java有参数 无参数方法

有参数java 方法只能返回一个参数 并且要用一个变量来接收参数 PrintFace pfc=new PrintFace(); int max=pfc.max(); 无参数直接调用 重载 public class HelloWorld { public static void main(String[] args) { // 创建对象 HelloWorld hello = new HelloWorld(); // 调用无参的方法 hello.print(); // 调用带有一个字符串参数的方法

java newInstance() 的参数版本与无参数版本详解

newInstance() 的参数版本与无参数版本详解 博客分类: Core Java 通过反射创建新的类示例,有两种方式: Class.newInstance() Constructor.newInstance() 以下对两种调用方式给以比较说明: Class.newInstance() 只能够调用无参的构造函数,即默认的构造函数: Constructor.newInstance() 可以根据传入的参数,调用任意构造构造函数. Class.newInstance() 抛出所有由被调用构造函数抛

程序猿之---C语言细节27(函数无参数时细节、函数默认返回int型证明、return默认还回值、void指针++操作)

主要内容:函数无参数时细节.函数默认返回int型证明.return默认还回值.void指针++操作 一.函数无参数时细节 函数无参数时应该加上void 在c语言中一个函数 void f(); 在使用时传递参数f(2);没有报错,而在c++中则会报错 最好加上void来明确函数是无参数的 二.函数默认返回类型为int型 见下面程序 三.return默认返回1 细节:return不可返回执行栈内存中的指针,因为该内存在函数体结束时自动销毁 四.void 指针++操作 void *p; p++; //