首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不能在具有class-validator的父类的构造函数中使用验证

在具有class-validator的父类的构造函数中使用验证是不可行的。class-validator是一个用于验证数据的库,它提供了一些装饰器和验证器函数,可以在类的属性上进行验证。然而,在父类的构造函数中使用验证是有问题的,因为在构造函数执行时,子类的属性还没有被赋值,无法进行验证。

解决这个问题的一种方法是将验证逻辑放在子类的构造函数中。在子类的构造函数中,首先调用父类的构造函数,然后再进行属性的赋值和验证。这样可以确保在验证之前,所有的属性都已经被正确地赋值。

另一种方法是使用生命周期钩子函数。在子类中,可以使用ngOnInit(对于Angular)或componentDidMount(对于React)等生命周期钩子函数来执行验证逻辑。这些钩子函数在组件初始化完成后被调用,此时可以确保所有的属性都已经被赋值。

总之,在具有class-validator的父类的构造函数中使用验证是不可行的,应该将验证逻辑放在子类的构造函数或生命周期钩子函数中。这样可以确保在验证之前,所有的属性都已经被正确地赋值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java中子类和构造函数

参考链接: Java继承和构造函数 这篇文章总结了关于Java构造常见​​问题。  1)为什么创建一个子类对象要也需要调用构造函数? ...,构造对象时,构造函数(super())首先被调用。...让构造器被调用原因是,如果有私有的属性需要在它构造函数初始化。 ...这是上边Super发生情况。  子类构造函数,无论有参构造还是无参构造,将会调用默认无参构造函数。...3)子类显式调用构造函数  下面的代码是正常:    子类(Sub)构造函数显式地调用(Super)带参构造参数。如果定义了相对应构造函数,那将会被正常良好调用。

2.1K20

python 子类调用构造函数实例

当子类继承后,需要调用方法和属性时,需要调用初始化函数。...,但新构造函数没有初始化,当没有初始化构造函数时,就会报错。...super函数返回一个super对象,解析过程自动查找所有的,当前和对象可以作为super函数参数使用,调用函数返回方法是超方法。...使用super函数如果子类继承多个只许一次继承,使用一次super函数即可。 如果没有重写子类构造函数,是可以直接使用属性和方法。...以上这篇python 子类调用构造函数实例就是小编分享给大家全部内容了,希望能给大家一个参考。

3.5K30

如果没有无参构造方法(也即只给了带参构造方法),子类构造方法怎么办?

如果没有无参构造方法(也即只给了带参构造方法),子类构造方法怎么办? /* 如果没有无参构造方法(也即只给了带参构造方法),子类构造方法怎么办?   ...法1:子类构造方法通过 super(...); 去显示调用带参构造方法。   ...法2:子类构造方法通过 this();/this(...); 调用本类其他构造方法,但是子类其他构造方法中一定会有一个去访问了带参构造方法。   法3:让提供无参构造。...;/super(...); 这三个语句访问子类或构造方法时候,必须放在第一句语句上。         否则,就可能会对数据进行多次初始化。 */ 示例代码如下图所示: ?

1.5K10

解析C#构造函数

为了使代码“可验证”,实例构造器在访问从基集成任何字段之前,必须先调用基构造器。如果派生构造器没有显示调用一个基构造器,C#编译器会自动生成对默认构造调用。 2.   ...3.构造函数使用范围:     (1).无参数实例构造函数与静态构造函数可以在同一同时定义,有参实例构造函数与静态构造函数也可以在同一同时定义。...C#构造使用情形: 1.静态构造函数使用:      中有一些静态字段或属性,需要在第一次使用之前,从外部源初始化这些静态字段和属性。...【使用this关键字实现初始化器,调用参数最匹配那个构造器】构造函数初始化器在构造函数函数体之前进行。 五.  C#类型构造性能:    1.    ...而显式类型构造器可能包含具有副作用代码,所以需要在精确拿捏运行时间】

3.2K50

子类A继承B, A a = new A(); 则B构造函数B静态代码块、B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行先后顺序是?

(1)子类A继承B, A a = new A(); 则: B静态代码块->子类A静态代码块->B非静态代码块->构造函数->子类A非静态代码块->子类A构造函数 (2)若子类构造函数显式调用了构造函数...,则调用该构造函数 class C { C() { System.out.print("C"); } } class A { C c = new C();...,但是该类继承自A,所以要先调用构造方法,这里通过super(“B”)显示调用了带参构造。...执行带参构造前要先对对象进行初始化,对c成员进行初始化,调用了C无参构造,所以调用顺序为: 先调用C无参构造 再调用A带参构造 最后调用调用子类构造 (3...顺序为:静态变量, 静态代码块 ,子类静态变量,子类静态代码块。

2.1K30

使用Python构造函数和析构函数

1、问题背景当使用Python时,可以使用构造函数和析构函数来初始化和清理实例。构造函数在创建实例时自动调用,而析构函数在删除实例时自动调用。...在上面的代码示例,Person具有一个构造函数__init__和一个析构函数__del__。...构造函数__init__在Person实例被创建时被调用,它将实例name属性设置为传入参数,并将实例的人口计数population加1。...问题是,如果我在程序显式地删除Person实例,析构函数__del__是否会被自动调用,或者我是否需要在“main”程序/添加一些东西,如上面的代码示例所示?...具有__del__意味着垃圾回收器放弃检测和清理任何循环链接,例如丢失对链表最后一个引用。您可以从gc.garbage获取被忽略对象列表。您有时可以使用弱引用来完全避免循环。

12510

dart系列之:dart构造函数

要想使用dart就要构造实例,在dart,一个构造函数有两种方式,一起来看看吧。...传统构造函数 和JAVA一样,dart可以使用和class名称相同函数作为其构造函数,这也是很多编程语言中首先构造函数创建方式,我们以Student为例,来看看dart构造函数是怎么样...如果不给dart指定构造函数,那么dart会为自动生成一个无参构造函数,如果这个是子类的话,则会自动调用无参构造函数。...那么对应子类构造函数来说,初始化时候有三步: 调用初始化列表 调用构造函数 调用自己构造函数 在步骤2,如果没有默认无参构造函数,则需要手动指定具体构造函数。怎么调用呢?...可以直接在子类构造函数后面使用:操作符接构造函数,如下所示: class Student { String?

3.2K00

【C++】继承 ⑥ ( 继承构造函数和析构函数 | 类型兼容性原则 | 指针 指向 子类对象 | 使用 子类对象 为 对象 进行初始化 )

地方 , 都可以使用 " 公有继承 " 派生 ( 子类 ) 对象 替代 , 该 派生 ( 子类 ) 得到了 除 构造函数 和 析构函数 之外 所有 成员变量 和 成员方法 ; 功能完整性 :..." 公有继承 " 派生 ( 子类 ) 本质上 具有 ( ) 完整功能 , 使用 可以解决问题 , 使用 公有继承派生 都能解决 ; 特别注意 : " 保护继承 " 和..." 私有继承 " 派生 , 是 不具有 完整功能 , 因为 最终继承 后派生 , 无法在 外部调用 公有成员 和 保护成员 ; 2、类型兼容性原则应用场景 " 类型兼容性原则..." 应用场景 : 直接使用 : 使用 子类对象 作为 对象 使用 ; 赋值 : 将 子类对象 赋值给 对象 ; 初始化 : 使用 子类对象 为 对象 初始化 ; 指针 : 指针 指向...// 通过指针调用函数 p_parent->funParent(); // 将指向子类对象指针传给接收指针函数 // 也是可以 fun_pointer

23620

【Kotlin】初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数定义成员属性 | 次构造函数 | 构造函数默认参数 )

文章目录 一、主构造函数定义临时变量 二、主构造函数定义成员属性 三、次构造函数 四、构造函数默认参数 一、主构造函数定义临时变量 ---- 在 Kotlin , 可以在 声明 时 在 名后...定义 " 主构造函数 " ; 在 主构造函数 , 可以 定义 成员属性 , 并为 成员属性 提供 初始值 ; 在 主构造函数 , 可以定义 临时变量 , 临时变量 一般使用 以下划线为开头 名称...---- 在主构造函数 定义临时变量 , 格式为 : class 名(_临时变量名: 临时变量类型){} 在主构造函数也可以 定义成员属性 , 格式为 : class 名(var 成员属性名:..., 每个次构造函数都可以有不同参数组合 ; 定义次构造函数后 , 必须调用主构造函数 , 并且为每个主构造函数 参数设置 参数值 ; 次构造函数可以实现代码逻辑 , 作为主构造函数补充 ; 代码示例...---- 在定义 构造函数 时 , 可以为 构造函数 参数 指定 默认值 , 如果 用户传入了 值参 则 使用用户传入值 , 如果用户没有传入值 则 使用该 默认值 ; 如果 构造函数 参数有 指定默认值

4.8K20

创建子类对象时,构造函数调用被子类重写方法为什么调用是子类方法?

static void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建A对象时候会调用子类方法...但是:创建B对象会调用方法? 答案: 当子类被加载到内存方法区后,会继续加载到内存。...如果,子类重写了方法,子类方法引用会指向子类方法,否则子类方法引用会指向方法引用。 如果子类重载了方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载方法,则方法引用会指向方法。 当子类对象创建时,会先行调用构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译时候,构造方法调用方法参数已经强制转换为符合方法参数了。 上边代码在编译前已经转换为下面这个样子了。

6.1K10

C++同时存在继承以及组合时候,构造函数构造顺序

C++一大特点就是面向对象,面向对象主要就是一些相关特性(封装、继承、多态)。 那么在继承以及成员属性包含其他实例对象时候,构造函数构造顺序到底是怎么样子呢?...那么当一个对象既包含了继承关系同时也在自身成员属性包含了其他对象实例化时候,那么这时候实例化该类对象时候,构造函数顺序会是怎么样子呢?下面来看看这一段代码吧。...<< "C 构造函数" << endl; } private: B b; // C组合有B对象成员 int i_c; }; int main() { C...A,并且在C组合了B实例化对象,那么我们可以直接到以下结果,可以得知。...A 构造函数 B 构造函数 C 构造函数 构造顺序是首先构造继承,其次构造组合实例对象,最后才是构造自己本身。

1.1K20

最全面的c++构造函数高级使用方法及禁忌

说明一下,我用是gcc7.1.0编译器,标准库源代码也是这个版本。 本篇文章讲解c++构造函数高级用法以及特殊使用情况。 1....里面使用移动构造就要小心了,一不小心就会出现问题哦,具体移动构造怎么实现可以参考上面第一点代码。...,再执行子类构造函数,那这里再思考一下上面第二点,如果构造函数可以为虚函数,那根据多态规则,构造函数将不会被执行,这也是不成立。...以上三种情况都必须使用初始化列表而不能在构造函数中进行赋值。 7....,而当子类没有实现时候才调用函数,这一幕是不是很熟悉,实际上就是发生了多态效果,通过gdb跟踪CSon构造函数,输出当前对象数据,如下: (gdb) p *this $2 = (CSon

1.6K30

ASP.NET AJAX(6)__Microsoft AJAX Library面向对象类型系统命名空间——构造函数——定义方法——定义属性——注册——抽象——继承——调用

可重复注册命名空间,每个独立脚本模块前都要注册命名空间以保证命名空间存在 定义构造函数 定义成员(方法、属性、事件) 注册 ——构造函数 构造函数即为function定义 通常用于初始化域变量..._mymethod=function{throw Error.notImplemented();}}//包含抽象方法 ——继承 调用构造函数必须调用构造函数,否则会丢失继承效果...= function(name) { MyNamespace.Intern.initializeBase(this, [name]);//调用构造函数 } MyNamespace.Intern.prototype...Employee三个 接口 与定义方法大致相同 构造函数抛出异常 所有的方法抛出异常(只有方法签名,不提供实现) 注册接口时使用registerInterface方法 接口无法继承其他接口 接口定义...= function(name) { MyNamespace.Intern.initializeBase(this, [name]);//调用构造函数 } MyNamespace.Intern.prototype

6.2K50

关于Java构造函数(Constructor)常见问题总结1 为什么调用子类构造方法时候,默认会调用构造方法2 常见错误:Implicit super constructor is und

这篇文章总结了Java使用构造函数中最常遇到五个问题!...编译器错误是因为默认super()无参构造函数是没有定义。在Java,如果一个没有定义构造函数,编译器会自动插入一个默认无参构造函数。...上一小节,我们知道,如果子类构造函数,没有显示调用构造函数,那么,编译器就会插入super(),也就是自动调用无参构造函数。但是此时,没有无参构造函数,所以就会报错了。...解决这个问题很简单,我们可以给插入一个无参构造函数,或者在子类构造函数显示调用有参构造函数。 在子类构造函数显示调用构造函数 下面的代码是正确。 ?...Paste_Image.png 构造函数使用规则 简单说,在使用时候,子类构造函数必须调用构造函数,不管有没有显示声明。所以,被调用构造函数,一定在定义好!

2.7K30

【C++】多态 ⑩ ( 建议将所有函数都声明为 virtual 虚函数 | 多态理解层次 | 指针和子类指针步长 )

没有添加任何 成员函数 与 成员方法 , 那么子类指针 与 指针 步长是相同 ; 一、建议将所有函数都声明为 virtual 虚函数 C++ , 每个 成员函数 都可以声明为 virtual...这里建议不需要将有 多态 需求函数声明为 虚函数 ; 二、多态理解层次 多态理解层次 : 多态实现效果 : 相同代码调用 , 有不同表现形态 ; 指针 可 指向子类对象 , 使用指针...调用 虚函数 可执行 子类对应函数 ; 多态实现条件 : ① 继承 , ② 虚函数重写 , ③ 指针/引用指向子类对象 ; 指针 可以 指向 对象 , 也可以指向 不同 子类对象 ;...; 有 虚函数 , 在 编译时 , 会生成 虚函数表 , 对应中生成一个 vptr 指针指向 虚函数表 ; vptr 指针 是 与 对象绑定 , 调用时 从 对象函数查找虚函数...; 通过 指针 访问虚函数时 , 直接根据 实际对象 vptr 指针找该对象函数表 , 然后调用 虚函数函数 ; 多态意义 : 多态是 设计模式 基础 , 是 软件框架 基础

23250

23.C++- 继承多种方式、显示调用构造函数、父子之间同名函数、virtual虚函数  上章链接: 22.C++- 继承与组合,protected访问级别

C++,继承方式共有3种: public继承 -指成员(变量和函数)访问级别,在子类中保持不变 private继承 -指成员,在子类变为private私有成员....,编译器会默认调用无参构造函数 若有子类对象,也会默认调用子类对象无参构造函数。...StrB(int i):123 也可以通过子类构造函数初始化列表来显示调用 接下来,修改上面子类StrB(string s)函数,通过初始化列表调用StrA(string s)构造函数 改为:...子类可以定义父同名成员和同名函数 子类成员变量和函数将会隐藏同名成员变量和函数 同名成员变量和函数依然存在子类 通过作用域分辨符(::)才可以访问同名成员变量和函数..., 所以执行同名成员变量和函数需要作用域分辨符(::)才行 父子间兼容 以上示例ParentChild子类为例 子类对象可以直接赋值给对象使用,比如: Parent p; Child

3.1K90

如何使用Python装饰器创建具有实例化时间变量函数方法

1、问题背景在Python,我们可以使用装饰器来修改函数或方法行为,但当装饰器需要使用一个在实例化时创建对象时,事情就会变得复杂。...例如,我们想要创建一个装饰器,可以创建一个新函数/方法来使用对象obj。如果被装饰对象是一个函数,那么obj必须在函数创建时被实例化。...如果被装饰对象是一个方法,那么必须为每个实例实例化一个新obj,并将其绑定到该实例。2、解决方案我们可以使用以下方法来解决这个问题:使用inspect模块来获取被装饰对象签名。...如果被装饰对象是一个方法,则将obj绑定到self。如果被装饰对象是一个函数,则实例化obj。返回一个新函数/方法,该函数/方法使用obj。...dec装饰器用于在A方法f以及函数myfunc、myfunc2和myfunc3上。

7410
领券