加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 在角镖中键入()的其他方式

发布时间:2020-12-17 07:12:20 所属栏目:安全 来源:网络整理
导读:我做了角落飞镖教程,我有一个问题. 要声明可用于依赖注入的类型,我必须这样做: class MyAppModule extends Module { MyAppModule() { type(RecipeBookController); }} 所有类型都是如此. 在一个大型应用程序中,您可以拥有数百种类型,因此声明所有类型是一种
我做了角落飞镖教程,我有一个问题.

要声明可用于依赖注入的类型,我必须这样做:

class MyAppModule extends Module {
  MyAppModule() {
    type(RecipeBookController);
  }
}

所有类型都是如此.

在一个大型应用程序中,您可以拥有数百种类型,因此声明所有类型是一种奇怪的方式.

有没有其他方法可以做到这一点?

谢谢.

解决方法

您可以使用反射来收集类型.如果您需要有关此方法的更多信息,请添加评论(我尽量避免在网络应用中反映).

编辑
反射可能有效,但是当你开始使用特殊情况时,它会很快变得难以理解.
当您使用DI时,您经常遇到类的构造函数需要InterfaceX类型的对象并且您想要指定实际应该注入满足要求的哪些类(实现接口)的情况.然后你开始用反射编写特殊情况.
使用类型(InterfaceX,implementedBy:Y);总是超级可读.
编辑结束

我不知道你是否认为这是改进,但我们做了什么(我在几个项目中看到过)

创建更多模块并使用install将它们添加到MyAppModule

例如见
– https://github.com/akserg/angular.dart.ui/blob/master/lib/accordion/accordion.dart
– https://github.com/akserg/angular.dart.ui/blob/master/lib/angular_ui.dart

accordion.dart

class AccordionModule extends Module {
  AccordionModule() {
    type(AccordionComponent);
    type(AccordionHeadingComponent);
    type(AccordionGroupComponent);
    value(AccordionConfig,new AccordionConfig());
  }
}

angular_ui.dart

class AngularUIModule extends Module {
  AngularUIModule() {
    install(new AlertModule());
    install(new AccordionModule()); // the above module
    install(new ButtonModule());
    install(new CarouselModule());
    install(new CollapseModule());
    install(new DropdownToggleModule());
    install(new ProgressbarModule());
    install(new RatingModule());
    install(new TabsModule());
    install(new TimeoutModule());
    install(new TransitionModule());
    install(new ModalModule());
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读