问题列表 - 第13815页

在ASP.NET MVC ContactsManager教程中是否有一种很好/正确的方法来解决依赖注入循环问题?

如果您不知道我在说什么,请查看教程并尝试自己添加依赖注入,或者尝试一下我对问题的解释.

注意:此问题不在ASP.NET原始教程的范围内.本教程仅建议使用的模式是依赖注入友好的.

问题基本上是Controller,ModelStateWrapper和ContactManagerService之间存在依赖循环.

  1. ContactController构造器采用IContactManagerService.
  2. ContactManagerService构造函数采用IContactManagerRepository (不重要)和IValidationDictionary (ModelStateWrapper实现).
  3. ModelStateWrapper构造函数采用ModelStateDictionary (在控制器上是一个名为"ModelState"的属性).

所以依赖循环是这样的:Controller> Service> ModelStateWrapper> Controller

如果您尝试向此添加依赖项注入,它将失败.所以我的问题是; 我该怎么办呢?其他人已经发布了这个问题,但答案很少,不同,所有看起来都有点"黑客".

我目前的解决方案是从IService构造函数中删除IModelStateWrapper并添加一个Initialize方法,如下所示:

public class ContactController : Controller
{
    private readonly IContactService _contactService;

    public ContactController(IContactService contactService)
    {
        _contactService = contactService;
        contactService.Initialize(new ModelStateWrapper(ModelState));
    }

    //Class implementation...
}

public class ContactService : IContactService
{
    private IValidationDictionary _validationDictionary;
    private readonly IContactRepository _contactRepository;

    public ContactService(IContactRepository contactRepository)
    {
        _contactRepository = contactRepository;
    }

    private void Initialize(IValidationDictionary validationDictionary)
    {
        if(validationDictionary == null)
            throw new ArgumentNullException("validationDictionary");

        _validationDictionary = validationDictionary; …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc dependency-injection inversion-of-control unity-container

22
推荐指数
1
解决办法
5500
查看次数

Git从当前检出的主人创建分支?

服务器上有一个git控制文件夹,其中检出主分支,并且修改了一大堆文件但未提交.有没有办法让我将更改提交到一个单独的分支,以便我可以回到一个干净的版本?

即我想有效地撤消所有这些人的变化,但是将它们存储在另一个机会中,所以如果那个人想要他们的改变,他们可以切换到那个分支.

(是的,我知道这不是git的设计工作,但这是我的情况!)任何想法非常感谢.

git version-control dvcs git-branch

76
推荐指数
3
解决办法
9万
查看次数

如何在C++构造函数中获得多态行为?

我有一个基类,我想看起来像这样:

class B
{
    // should look like: int I() { return someConst; }
    virtual int I() = 0;
    public B() { something(I()); }
}
Run Code Online (Sandbox Code Playgroud)

要点是强制派生类重写I并强制在构造每个对象时调用它.这习惯于做一些簿记,我需要知道正在构造什么类型的对象(但我否则将当前对象视为基类).

这不起作用,因为C++不允许您从构造函数中调用抽象虚函数.

有没有办法达到同样的效果?


根据这个链接,似乎答案是没有办法得到我想要的.不过它说的是:

最简洁的答案是不.基类不知道它从哪个类派生出来 - 这也是一件好事.[...]也就是说,在构造函数Derived1 :: Derived1开始之前,对象不会正式成为Derived1的实例.

但是在我的情况下,我不想知道它什么,但它会变成什么.事实上,只要我用户可以(事后)将其映射到一个类,我甚至不关心我得到什么.所以我甚至可以使用像返回指针这样的东西来逃避它.

(现在回到阅读该链接)

c++ virtual-functions abstract

5
推荐指数
1
解决办法
3463
查看次数

类未注册(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))

当我在winform中使用COM引用时,我收到此错误.我尝试在winform中使用Window Media Player COM,它运行正常.但是当我尝试使用其他COM dll时出现此错误.

我尝试了"regsvr32"到该COM dll但它已成功注册,但是当我运行使用该COM对象的winform时,我仍然收到此错误.

interop winforms

5
推荐指数
1
解决办法
3万
查看次数

PHP全局变量未导入会话处理程序

我正在使用ADOdb.由于某种原因,实际上$db没有在'write'函数中导入.

该函数用于导入$db实际值.相反,它将空值分配给$db:

<?php
// load ADODB class
include(DIR_WS_CLASSES . "adodb5/adodb.inc.php");

$db = NewADOConnection(DB_TYPE);
$db->Connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);


class SessionManager {
    var $life_time;

    function SessionManager(){
        global $db;
        // Read the maxlifetime setting from PHP
        $this->life_time = get_cfg_var("session.gc_maxlifetime");

        // Register this object as the session handler
        session_set_save_handler(array(&$this, "open"), 
                                array(&$this, "close"), 
                                array(&$this, "read"), 
                                array(&$this, "write"), 
                                array(&$this, "destroy"), 
                                array(&$this, "gc"));
    }

    function open($save_path, $session_name){
        global $sess_save_path;
        global $db;

        $sess_save_path = $save_path;

        return true;
    }

    function close(){
        global $db; …
Run Code Online (Sandbox Code Playgroud)

php adodb-php

0
推荐指数
1
解决办法
1799
查看次数

Silverlight是否有足够的安装基础来考虑使用它来部署公共Web应用程序?

我知道不同的企业已经以各种方式问了这个问题一百万次,但我想知道社区对它的看法[有这个问题,但在快速发展的科技世界,一年是很长一段时间].出于理论目的,让我们考虑一个用户可以观看视频的网站,例如YouTube,Hulu等(实际上,它是一种按需转码解决方案,但足够接近).该网站可以部署:

  1. 使用HTML,JavaScript和HTML5的<video>标记
  2. 使用HTML,JavaScript和Flash(就像大多数人一样)
  3. 仅为视频播放器使用HTML,JavaScript和Silverlight
  4. 使用Silverlight进行导航,创建丰富的全银光体验

(让我们假设,再次低调地说,全银版本并不像今天的大多数全闪存页面那样令人讨厌,而是提供类似于桌面应用程序的体验)

哪种方式能够覆盖大部分人口?人们如何看待必须安装Silverlight来查看网站 - 他们想要看多少内容才能让他们点击安装按钮?如果用户在具有有限带宽的另一台公共计算机上浏览站点上的站点,可能使用较旧的硬件和无特权的用户帐户,那么他们安装Silverlight运行时有多容易?

真的很想使用Silverlight,因为我喜欢它的'模型(我在工作中使用它作为内部应用程序,我认为它是一个很好的平台),但是我担心对于一个公共站点,很大比例用户将无法查看该网站,那么Flash可能是更好的选择.

编辑:

好吧,我们的想法是建立一个用户可以通过网络访问家用电脑上的视频的播放器.因此,用户通常不会使用家用电脑 - 他们将使用工作电脑,朋友的电脑,公共电脑等.这就是为什么我担心安全/安装权限问题.

silverlight accessibility popularity

6
推荐指数
1
解决办法
1205
查看次数

黑莓 - 从本地地址簿拨打电话

如何从BB本地书中附加的菜单项进行调用('从ABC调用'选项)?

integration blackberry phone-call addressbook

1
推荐指数
1
解决办法
3247
查看次数

从Unicode字符中删除变音符号(ńǹṅṅņṇṋ̈ɲƞᶇɳȵ)

我在看的算法,可以用变音符号(字符之间映射波浪,抑扬,插入符号,变音符号,卡隆)和他们的"简单"的角色.

例如:

?  ?  ?  ñ  ?  ?  ?  ?  ?  ?  ?  ? ? ? ?  --> n
á --> a
ä --> a
? --> a
? --> o
Run Code Online (Sandbox Code Playgroud)

等等.

  1. 我想用Java做这个,虽然我怀疑它应该是Unicode-y,并且应该可以在任何语言中合理地使用.

  2. 目的:允许轻松搜索带有变音符号的单词.例如,如果我有一个网球运动员数据库,并且输入了Björn_Borg,我还会保留Bjorn_Borg,这样如果有人进入Bjorn而不是Björn,我就能找到它.

java unicode diacritics transliteration

85
推荐指数
6
解决办法
3万
查看次数

WCF的RESTful框架替代方案

寻找WCF REST启动工具包的替代方案,理想情况下是OSS框架.

有人有名单吗?

干杯

奥利

.net rest wcf frameworks

2
推荐指数
1
解决办法
1476
查看次数

将MS ACCESS DB导入mySql?

我正在研究一个项目atm,我需要将存储在MS ACCESS数据库中的数据导入mySql.对于mySql,我在Ubuntu机器上使用phpMyAdmin,我有另一台Windows机器,我可以从中访问Access数据库,在MS Access 2003中,我找不到将数据转换为mySql的选项?可以这样做吗?

php mysql ms-access

6
推荐指数
1
解决办法
2万
查看次数