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

是否有可能在typedi的Container.get()中调用构造函数?

在typedi的Container.get()方法中调用构造函数是不可能的。typedi是一个用于依赖注入的库,它允许我们通过装饰器或注解的方式来声明依赖关系,并自动解析和注入这些依赖。当我们使用Container.get()方法获取一个实例时,typedi会检查该实例是否已经在容器中注册,并尝试解析其依赖关系。然而,typedi并不会调用构造函数来创建实例,而是使用已经注册的依赖关系来构建实例。

在typedi中,我们可以使用@Service()装饰器将一个类标记为可注入的服务,并使用@Inject()装饰器将依赖注入到类的构造函数中。当我们调用Container.get()方法时,typedi会根据类的构造函数和已注册的依赖关系来创建实例,并自动解析和注入依赖。

因此,在typedi的Container.get()方法中,我们不能直接调用构造函数,而是应该通过依赖注入的方式来获取实例。这样可以确保依赖关系的正确解析和注入,提高代码的可维护性和可测试性。

关于typedi的更多信息和使用示例,您可以参考腾讯云的typedi产品介绍链接地址:https://cloud.tencent.com/product/typedi

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

相关·内容

  • java构造函数调用另一个构造函数_java构造函数

    参考链接: Java程序从另一个调用一个构造函数 package demo03; /*  * 构造方法是专门用来创建对象方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法  * 格式:... * public 类名称(参数类型 参数名称){  *         方法体  *   * }  * 注意事项:  * 1.构造方法名称必须和所在类名称完全一样,就连大小写也要一样  * 2.构造方法不要写返回值类型...,连void都不写  * 3.构造方法不能return一个具体返回值  * 4.如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数,方法体什么都不做  * 5.一旦编写了至少一个构造方法...,那么编译器将不再赠送  * 6.构造方法也是可以进行重载。  ...;     }     //参数构造方法     public Student(String name,int age) {         System.out.println("全参构造方法执行啦

    4.5K60

    【C++】构造函数分类 ③ ( 调用构造函数方法 | 括号法 | 等号法 )

    一、在不同内存创建类实例对象 在上一篇博客 【C++】构造函数分类 ② ( 在不同内存创建类实例对象 | 栈内存创建实例对象 | new 关键字创建对象 ) , 分析了 在 栈内存 和...堆内存 创建对象 两种情况 ; 本篇博客 , 继续分析 , 栈内存调用 构造函数 两种方法 : 括号法 等号法 C++ 类成员变量为 : public: int m_age; char...* m_name; 之后都是以该成员变量为参考 , 为这两个成员变量赋值 ; 1、括号法调用构造函数 首先 , 在 Student 类, 定义两个构造函数 , 之后就使用括号法调用上述构造函数...: 通过 Student(18, “Tom”) 方法 , 手动调用构造函数 , 上述代码会产生一个匿名 Student 实例对象 , 然后再将该 匿名对象 赋值给 栈内存 Student...构造函数 , 并将创建 实例对象 赋值给 s5 变量 , 这是 C++ 对 = 等号运算符增强 ; // 使用 等号法 调用 一个参数 构造函数 // C++ 对等号进行了功能增强

    20740

    2020最后一天,不妨了解下装饰器

    装饰器用法是@decorator。decorator是一个函数,会在运行时时候调用,对类进行一些修改。需要注意是,在javascript,装饰器只能用于类,不能作用于普通函数。...如果装饰器函数返回值,则使用这个返回值作为新 class。...,再执行作用于成员装饰器 3、执行完 1、2 后,执行构造函数参数装饰器;最后执行作用于 class 装饰器 typescript 更强大装饰器 在vue-property-decorator应用...上面提到一些用法更多是 javascript 场景中使用装饰器优化我们代码结构,在typescript,装饰器还有一个更强大功能,就是能在运行时去拿到我们在typescript定义时候类型信息...typedi是一个 typescript(javascript)依赖注入工具,可以在 node.js 和浏览器构造易于测试和良好架构应用程序。

    98010

    不容错过 Node.js 项目架构

    图片描述 因为一天,您将希望在一个 CLI 工具上来使用您业务逻辑,又或从来不使用。对于一些重复任务,然后从 Node.js 服务器上对它自己进行调用,显然这不是一个好主意。 ?...不久之后,这个简单 “创建” 操作将完成几件事,最终您将获得 1000 行代码,所有这些都在一个函数。 这违反了单一责任原则。 因此,最好从一开始就将职责划分,以使您代码保持可维护性。...DI 或控制反转(IoC)是一种常见模式,通过 “注入” 或通过构造函数传递类或函数依赖关系,有助于代码组织。...这就是创建依赖注入框架原因。 这个想法是在类定义你依赖,当你需要一个类实例时只需要调用 “Service Locator” 即可。...现在让我们来看一个使用 TypeDI NPM 库示例,以下 Node.js 示例将引入 DI。 可以在官网查看更多关于 TypeDI 信息。

    5.8K30

    【Groovy】集合遍历 ( 调用集合 any 函数判定集合是否指定匹配规则元素 | 代码示例 )

    文章目录 一、集合 any 函数 二、集合 any 函数代码示例 一、集合 any 函数 ---- 集合 any 函数 , 用于判断集合是否 满足闭包条件 元素 , 返回一个布尔值 ,...集合 , it 类型是集合元素类型 String ; 如果找到了 匹配闭包条件 元素 , 则返回true ; 否则 , 返回 false ; 集合 any 函数运行 : /**...* 迭代iterable内容,并检查谓词是否至少对一个元素有效...def list = ["Java", "Kotlin", "Groovy", "Gradle"] // 查找集合是否 "Java" 元素 def isMatch...list.any{ it == "Java" } // true println isMatch // 查找集合是否

    1.2K20

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

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

    6.1K10

    【Groovy】Groovy 方法调用 ( Groovy 构造函数为成员赋值 | Groovy 函数参数传递与键值对参数 | 完整代码示例 )

    文章目录 一、Groovy 构造函数为成员赋值 二、Groovy 函数参数传递与键值对参数 三、完整代码示例 一、Groovy 构造函数为成员赋值 ---- Groovy 类没有定义构造函数 ,...但是可以使用如下形式构造函数 , 为 Groovy 类设置初始值 ; new 类名(成员名1: 成员值1, 成员名2: 成员值2) 顺序随意 : 成员顺序随意 , 没有强制要求 , 只需要 成员名..., ${student3.age}" 执行结果为 : student : Tom , 18 student2 : Jerry , 16 student3 : Jim , null 二、Groovy 函数参数传递与键值对参数...---- 在 Groovy 构造函数 , 可以使用 成员名1: 成员值1, 成员名2: 成员值2 类型参数 , 这是键值对 map 类型集合 ; 但是对于普通函数 , 不能使用上述格式 ,...如果出现 变量名1: 变量值1, 变量名2: 变量值2 样式代码 , 会将上述参数识别为一个 map 集合 ; 定义了一个 Groovy 类 , 其中定义方法接收 2 个参数 ; class Student

    9.1K20

    用TypeScript装饰器实现一个简单依赖注入

    在类,依赖关系多种表现形式,如:一个类向另一个类发消息;一个类是另一个类成员;一个类是另一个类某个操作参数,等等。...由此我们可以看到,仅仅是为了修改轮胎构造函数,这种设计却需要修改整个上层所有类构造函数!在软件工程,这样设计几乎是不可维护。   ...LogService 进行了实例化,并在 main 函数内进行了调用,这是传统调用方式。...当 LogService 变更,修改了构造函数,而这个模块被依赖数很多,我们就得挨个找到引用此模块部分,并一一修改实例化代码。...我们甚至可以让参数注入在 constructor 形参里面,使用 Inject 直接在构造函数里注入依赖。

    1.1K20

    用TypeScript装饰器实现一个简单依赖注入

    在类,依赖关系多种表现形式,如:一个类向另一个类发消息;一个类是另一个类成员;一个类是另一个类某个操作参数,等等。...由于我们修改了轮胎定义,为了让整个程序正常运行,我们需要做以下改动:   由此我们可以看到,仅仅是为了修改轮胎构造函数,这种设计却需要修改整个上层所有类构造函数!... LogService 进行了实例化,并在 main 函数内进行了调用,这是传统调用方式。...当 LogService 变更,修改了构造函数,而这个模块被依赖数很多,我们就得挨个找到引用此模块部分,并一一修改实例化代码。...我们甚至可以让参数注入在 constructor 形参里面,使用 Inject 直接在构造函数里注入依赖。

    71510

    深入理解javascript继承机制(2)临时构造函数模式Uber – 从子对象调用父对象接口将继承部分封装成函数

    为了解决前文提到将共有的属性放进原型这种模式产生子对象覆盖掉父对象同名属性问题,就出现了另一种模式,我们称作为临时构造函数模式 临时构造函数模式 我们具体通过代码来分析 function Shape...F,然后将Shape构造函数原型对象赋给F原型。...Uber – 从子对象调用父对象接口 传统面向对象编程语言都会有子对象访问父对象方法,比如java中子对象要调用父对象方法,只要直接调用就可以得到结果了。...,给每个构造函数天价了一个uber属性,同时使他指向父对象原型,然后更改了ShapetoString函数,更新后函数,会先检查this.constructor是否uber属性,当对象调用toString...时,this.constructor就是构造函数,找到了uber属性之后,就调用uber指向对象toString方法,所以,实际就是,先看父对象原型对象是否同String,就先调用它。

    1.6K20

    【C++】C++ 类 this 指针用法 ③ ( 全局函数 与 成员函数 相互转化 | 构造函数设置默认参数值 | 返回匿名对象与返回引用 )

    ; } 详细代码 , 参考最后完整代码示例 ; 二、构造函数设置默认参数值 ---- 为 Student 类定义了构造函数 , 则其默认无参构造函数 , 就不会生成 ; // 带参构造函数..." << endl; } 此时 , 如果要创建 Student 对象 , 只能调用上述 构造函数 , 如果使用 Student s2 方式调用 默认构造函数 创建 Student 对象 , 就会报错...; 如下带参数构造函数 , 并且为其 构造函数 参数 设置一个默认值 , 此时就可以使用 类名 对象名 方式定义对象变量 ; class Student { public: // 带参构造函数...s.age = s1.age + s2.age; s.height = s1.height + s2.height; return s; } int main() { // 调用构造函数...创建 Student 实例对象 Student s(18, 180); // 打印对象情况 s.print(); // 调用构造函数 , 构造函数参数使用默认值 Student s2

    20520

    TS 进阶 - 实际应用 03

    # 装饰器与反射元数据 # 装饰器 装饰器本质是一个函数,只不过它入参时提前确定好。TypeScript 装饰器目前只能在类及类成员上使用。...() class Foo {} // 程序执行时会先执行 Deco(),再用内部返回函数作为装饰器实际逻辑 // 以此可以通过入参来灵活调整装饰器作用 TypeScript 装饰器可以分为:...foo.nickName); // Cell // @ts-expect-error console.log(foo.otherName); // Cellinlab 参数装饰器 参数装饰器包括了构造函数参数装饰器和方法参数装饰器...为类或类属性添加元数据后,构造函数会具有 [[Metadata]] 属性,该属性内部包含一个 Map 结构,键为属性键,值为元数据键值对。...静态成员元数据信息存储于构造函数,而实例成员元数据信息存储与构造函数原型上。

    48320

    全新 JavaScript 装饰器实战下篇:实现依赖注入

    这个表示这个提案和装饰器不解渊源,所以当我们谈及装饰器时候,总会看到它身影。 元数据? 没那么高大上,就是一些 key/value 存储 扩展了 Reflect API?...因为所有装饰器都是共享一个对象空间,避免冲突职责就交给开发者了。 大概两种方式: 命名空间。比如单纯用字符串 key 库名称.{是否静态}.{装饰器位置}....继续探索 Typescript 装饰器能力边界 在上篇文章,我们提到 Typescript 对新版装饰器了更严格检查。...现在我们很容易做到: 先来构造注入标识符类型(灵感来源于 Vue provide/inject): export interface InjectionKey extends Symbol...上面的代码一个问题没有解决,就是循环依赖。

    58430

    【Groovy】集合遍历 ( 调用集合 every 方法判定集合所有元素是否符合闭包规则 | =~ 运算符等价于 contains 函数 | 代码示例 )

    文章目录 一、调用集合 every 方法判定集合所有元素是否符合闭包规则 二、代码示例 一、调用集合 every 方法判定集合所有元素是否符合闭包规则 ---- 集合 every 方法 ,...用于 判定 集合 所有元素是否 都符合指定 闭包规则 ; 如果 所有的元素否符合 , 则返回 true ; 如果 1 个元素不符合 , 即使其它 99 个元素符合 , 返回 false...; 只要集合中出现一个元素不符合闭包规则 , 则返回 false ; Collection every 函数原型 : /** * 用于确定给定谓词闭包是否有效 (i.e....contains 函数 , 用于判断字符串是否包含了另外一个子串 ; 代码示例 : // 为 ArrayList 设置初始值 def list = ["Java",..."Gradle"] // 查找集合元素是否都包含 a def isContainA = list.every{ it =~ "a"

    3K40

    ThreadLocal

    这个类到底什么用处呢?在并发编程时候,成员变量如果不做任何处理其实是线程不安全,各个线程都在操作同一个变量,显然是不行,并且我们也知道volatile这个关键字也是不能保证线程安全。...二、构造方法和方法 ?...4、分析:     当t1这边线程开启后,将t1存放p。之后再Tread开启另一个线程。使用构造方法将t1传入到Thread,但是发现没有办法取到t1值。...4、总结:当我们调用get方法时候,其实每个当前线程中都有一个ThreadLocal。每次获取或者设置都是对该ThreadLocal进行操作,是与其他线程分开。   ...事实上,从本质来讲,就是每个线程都维护了一个map,而这个mapkey就是threadLocal,而值就是我们set那个值,每次线程在get时候,都从自己变量取值,既然从自己变量取值,那肯定就不存在线程安全问题

    53772
    领券