社区首页 >问答首页 >如何在mvc3中不使用构造器模式从对象中获取资源

如何在mvc3中不使用构造器模式从对象中获取资源
EN

Stack Overflow用户
提问于 2011-10-23 07:37:41
回答 2查看 896关注 0票数 1

当在mvc3中使用Ninject时,我们会做一些类似的事情,比如安装ninject,注册器模块或服务。

我们像这样编写控件

代码语言:javascript
代码运行次数:0
复制
public class HomeController : Controller
{
    private IHelloService _service;
    public HomeController(IHelloService service)
    {
        _service = service;
    }

    public string Index()
    {
        return _service.GetGreeting();
    }
}

我想做一些像这样的事情

代码语言:javascript
代码运行次数:0
复制
public class HomeController : Controller
{
    private IHelloService _service;

    /*
          No default constructor
    */

    public string Index()
    {
        _service= Ask_Ninject_to_provide_resource
        return _service.GetGreeting();
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-23 07:58:06

代码语言:javascript
代码运行次数:0
复制
public class HomeController : Controller
{
    private IHelloService _service;

    /*
          No default constructor
    */

    public string Index()
    {
        _service= DependencyResolver.Current.GetService<IHelloService>();
        return _service.GetGreeting();
    }
}

尽管我会严肃地质疑这样做的必要性。

票数 5
EN

Stack Overflow用户

发布于 2011-10-23 08:00:50

您当前编写控件的实践比您提出的更好。您希望能够通过字段进行注入,而不是通过构造函数。这不是一个好主意,我们不推荐这样做。

引用自Ninject wiki

“尽管它的简单性很诱人,但您通常应该尽量避免使用字段注入,因为只能通过Ninject设置值。这使得单元测试变得更加复杂,因为有时手动使用依赖项注入将模拟对象注入到单元测试中是最容易的。(使用Ninject进行单元测试将在后面进行更深入的讨论。)”

另一种选择是通过属性注入,但同样,您必须有一个非常好的理由这样做。在大多数情况下,构造函数注入应该可以完成这项工作。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7864953

复制
相关文章
java 解决父构造器中拿到对象
这两天被问到一个有意思的问题,就是如果在构造器中拿到匿名对象。 这个问题有意思在,直觉上是可以通过外部放一个成员变量去接,然后后续就可以使用了,但实际不行。
潇洒
2023/10/20
1180
Spring 如何从 IoC 容器中获取对象?
前面几篇文章主要分析了 Spring IoC 容器如何初始化,以及解析和注册我们定义的 bean 信息。
WriteOnRead
2021/03/12
9.7K0
Spring 如何从 IoC 容器中获取对象?
使用 Clientset 获取 Kubernetes 资源对象
本节主要讲解 Kubernetes 核心的资源类型 Scheme 的定义以及如何使用 Clientset 来获取集群资源对象。
我是阳明
2020/07/30
4.1K0
使用 Clientset 获取 Kubernetes 资源对象
vue 项目中从session中获取对象,并且使用里面的属性
django后端传给前段一个json对象,vue接收后如何保存在session中,并且可以在其他的页面从session中拿出对象,用这个对象里面的属性
一写代码就开心
2021/06/17
5K0
vue 项目中从session中获取对象,并且使用里面的属性
Swift学习:构造器(中)
本篇继续对Swift中的构造器进行介绍,这里主要说到类的继承和构造。 作为引用类型的类具有的继承特性,这使得类的构造过程较为复杂一些,因为涉及到很多细节性的问题。在使用之前,我们需要了解一些基本的问题: 类中所有存储属性,包括继承父类的属性,都要在构造过程中设置初值 Swift类的构造器分为指定构造器和便利构造器,确保完成构造过程 一、指定构造器和便利构造器 指定构造器: 类的主要构造器,负责初始化类中所有属性,在继承关系中可调用父类链中的父类构造器 每个类至少一个指定构造器。但是某些情况下,许多类是通过继
梧雨北辰
2018/04/24
9340
如何使用建造者模式构造复杂对象?
『建造者模式』是一种简化复杂对象构建过程的设计模式,他的核心夙愿是:把对象的构建和表述分离。
Single
2021/04/22
6460
Python中可迭代对象怎么获取迭代器?
小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
程序员小猿
2021/01/19
5860
Springsecurity从当前请求对象中获取用户信息
SpringMVC中Controller的请求参数都是当前请求HttpServletRequest带来的,Authentication Principal也是HttpServletRequest带来的,在Controller层我们拿到的是HttpServletRequest的实例是Servlet3SecurityContextHolderAwareRequestWrapper
周杰伦本人
2022/10/25
2.9K0
Python中可迭代对象怎么获取迭代器?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!
用户1564362
2019/09/23
9040
js中获取对象类型
<!DOCTYPE html> <html> <head> <title> </title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <script type="text/javascript"> let qq=new Object(); console.log(typeof qq); let arr=new Array(); console.lo
贵哥的编程之路
2020/10/28
21.7K0
Java中获取class对象
当我们要获取类的信息及方法,利用Java中的反射机制,便于我们更加灵活的编写代码,可以在程序运行时装配代码,还可以实现动态代理。
头发还在
2023/10/16
1520
如何在python中构造时间戳参数
前面有一篇随笔大致描述了如何在jmeter中生成时间戳,这次继续介绍下在用python做接口测试时,如何构造想要的时间戳参数
冰霜
2022/03/19
2.5K0
如何在python中构造时间戳参数
使用rvest从COSMIC中获取突变表格
在学习如何爬取网页之前,要了解网页本身的结构。 用于构建网页的主要语言为 HTML,CSS和Javascript。HTML为网页提供了其实际结构和内容。CSS为网页提供了其样式和外观,包括字体和颜色等细节。Javascript提供了网页功能。在此,我们将主要关注如何使用R包来读取构成网页的 HTML 。
生信技能树
2022/04/14
1.9K0
使用rvest从COSMIC中获取突变表格
JavaScript 中如何使用状态模式简化对象
英文 | https://medium.com/frontend-canteen/simplify-your-object-with-state-pattern-in-javascript-8674ff46edb1
coder_koala
2022/11/28
1.7K0
JavaScript 中如何使用状态模式简化对象
Scala中的构造器与对象【文末加群学习哦】
在《大数据之脚踏实地学19--Scala中类的使用》中我们详细介绍了Scala中类的使用,通过类的构造,借助于new关键词创建不同的实例化对象,进而实现代码的可复用性。在本期我们将继续介绍跟类相关的另外两个主题,即构造器和单例对象。
1480
2019/05/23
6190
UE4 从类获取场景中的所有对象
static void GetAllActorsOfClass ( const UObject * WorldContextObject, TSubclassOf< AActor > ActorClass, TArray< AActor * > & OutActors ) //需要include的头文件 #include "Kismet/GameplayStatics.h" //使用方法 TArray ArryActors; UGameplayStatics::GetAllActorsOfClass
Ning@
2021/11/10
6.1K0
如何在js中创建对象
七夕临近了,没有对象的来创建一个吧 使用对象字面量: const o = { name: "zehan", greeting() { return `Hi, 我是${this.name}`; } }; o.greeting(); // "Hi, zehan" 使用构造函数: function Person(name) { this.name = name; } Person.prototype.greeting = function () { return `Hi, 我是
ZEHAN
2020/09/23
7.6K0
从spring容器中获取对象scope为单例、多例
1.案例 1.1spring配置文件 1.2 测试类
2020/10/23
1.6K0
从spring容器中获取对象scope为单例、多例
点击加载更多

相似问题

如何在构造函数中获取资源?

12

如何在MVC3中获取资源名?

23

模块模式对象可以从构造器模式对象继承吗?

10

如何从资源对象中获取资源名称?

53

从资源对象Azure中获取资源组名称

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档