问题列表 - 第1641页

对具有许多依赖项的类使用依赖注入框架

我一直在研究.NET的各种依赖注入框架,因为我觉得我正在开发的项目将从中受益匪浅.虽然我认为我已经很好地掌握了这些框架的功能,但我仍然不清楚如何最好地将它们引入大型系统.大多数演示(可以理解)往往是具有一个或两个依赖关系的非常简单的类.

我有三个问题......

首先,您如何处理那些常见但无趣的依赖关系,例如ILog,IApplicationSettings,IPermissions,IAudit.对于每个类来说,在构造函数中将这些作为参数似乎有点过分了.在需要时使用DI容器的静态实例来获取它们会更好吗?

MyClass(ILog log, IAudit audit, IPermissions permissions, IApplicationSettings settings)
// ... versus ...
ILog log = DIContainer.Get<ILog>();
Run Code Online (Sandbox Code Playgroud)

其次,如何处理可能使用的依赖项,但创建起来可能很昂贵.示例 - 类可能依赖于ICDBurner接口,但不希望创建具体实现,除非实际使用了CD刻录功能.您是否在构造函数中将接口传递给工厂(例如ICDBurnerFactory),或者您是否再次采用静态方式直接获取DI Container并在需要时询问它?

第三,假设您有一个大型Windows窗体应用程序,其中顶级GUI组件(例如MainForm)可能是数百个子面板或模态窗体的父级,每个子面板或模式窗体可能具有多个依赖关系.这是否意味着应该将MainForm设置为具有其子项的所有依赖项的超集作为依赖项?如果你这样做了,最终是否会创建一个巨大的自我膨胀怪物来构建你创建MainForm时可能需要的每一个类,在这个过程中浪费时间和记忆?

dependency-injection

36
推荐指数
2
解决办法
3765
查看次数

如何编写好的错误消息?

虽然这更像是一种书面语言问题而不是编码语言问题,但程序员必须在客户或其他人不提供复制的情况下这样做.任何错误消息的例子,无论好坏,都欢迎指出.

我简短地搜索过,找不到欺骗线程.好的,有它.谢谢,所有.

usability custom-errors

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

班级成员组织

对班级成员进行排序的最佳方法是什么?

我和团队成员发生冲突.他建议我们按字母顺序对成员进行排序.我认为最好以语义方式组织:首先是重要的属性,要么是相关的方法等等.

你怎么看?

language-agnostic coding-style class

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

使用PHP DOM在XML文件中插入数据

我试图将新数据插入到现有的XML文件中,但它无法正常工作.这是我的xml文件:

<list>
    <activity>swimming</activity>
    <activity>running</activity>
<list>
Run Code Online (Sandbox Code Playgroud)

现在,我的想法是创建两个文件:一个索引页面,它显示文件中的内容并提供一个用于插入新元素的字段,以及一个将数据插入XML文件的php页面.这是index.php的代码:

<html>
<head><title>test</title></head>
</head>

<?php
    $xmldoc = new DOMDocument();
    $xmldoc->load('sample.xml', LIBXML_NOBLANKS);

    $activities = = $xmldoc->firstChild->firstChild;
    if($activities!=null){
        while(activities!=null){
            echo $activities->textContent.'<br/>';
            activities = activities->nextSibling.
        }
    }
?>

<form name='input' action='insert.php' method='post'>
    insert activity:
    <input type='text' name='activity'/>
    <input type='submit' value='send'/>
</form>
</body>
</html
Run Code Online (Sandbox Code Playgroud)

这是insert.php的代码:

<?php
    header('Location:index.php');
    $xmldoc = new DOMDocument();
    $xmldoc->load('sample.xml');

    $newAct = $_POST['activity'];

    $root = $xmldoc->firstChild;

    $newElement = $xmldoc->createElement('activity');
    $root->appendChild($newElement);
    $newText = $xmldoc->createTextNode($newAct);
    $newElement->appendChild($newText);

    $xmldoc->save('sample.xml');
?>
Run Code Online (Sandbox Code Playgroud)

用户将访问index.php,在那里他将看到XML文件中存在的当前活动的列表,以及下面可以插入新活动的文本字段.单击发送按钮后,页面将调用insert.php,其中包含在DOM树中打开XML文件的代码,在根节点下插入新节点并回调index.php页面,用户应该在能够看到活动清单,他在其他活动下的新活动.它不起作用.当我点击按钮提交新条目时,页面刷新,显然没有任何反应,XML与以前相同.我做错了什么?此外,我想知道是否有更好的方法.

php xml dom

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

如何检测用户何时成功完成在php中下载文件

我有一个php页面来处理文件下载的请求.我需要能够检测文件何时成功下载.如何才能做到这一点?也许有一些方法可以检测到这个客户端,然后向服务器发送确认信息.

谢谢.

编辑:通过句柄,我的意思是该页面正在做这样的事情:

$file = '/var/www/html/file-to-download.xyz';
  header('Content-Type: application/octet-stream');
  header('Content-Length: ' . filesize($file));
  header('Content-Disposition: attachment; filename=' . basename($file));
  readfile($file);
Run Code Online (Sandbox Code Playgroud)

php attachment http-headers

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

如何在不使用框架的情况下编写好的PHP代码?

除了标准的OO概念之外,还有哪些其他策略可以在不使用框架时生成良好,干净的PHP代码?

php

40
推荐指数
6
解决办法
8962
查看次数

如何判断.NET应用程序是否在DEBUG或RELEASE模式下编译?

我的计算机上安装了一个应用程序.如何确定它是否在DEBUG模式下编译?

我曾尝试使用.NET Reflector,但它没有显示任何具体内容.这是我看到的:

// Assembly APPLICATION_NAME, Version 8.0.0.15072
Location: C:\APPLICATION_FOLDER\APPLICATION_NAME.exe
Name: APPLICATION_NAME, Version=8.0.0.15072, Culture=neutral, PublicKeyToken=null
Type: Windows Application
Run Code Online (Sandbox Code Playgroud)

.net executable debug-symbols compiler-options

45
推荐指数
3
解决办法
2万
查看次数

在c/c ++中寻找一个开源的Traveling Salesman函数/库?

我知道那里有一些不同的旅行推销员项目,我和LKH玩了一下,但我想知道是否有人对任何其他人有任何建议?

我的项目是GPL,所以我需要一些与该许可兼容的东西.

输入 产量

c c++ gpl traveling-salesman

6
推荐指数
0
解决办法
2772
查看次数

区分HFS +和HFS标准卷

IOKit和DiskArbitration框架可以告诉我很多关于mac上挂载卷的事情,但它们似乎无法区分HFS +和HFS标准卷.

由于IOKit/DA键Content,DAVolumeKind并且DAMediaContent总是Apple_HFS和两个HFS标准和HFS +卷HFS.

diskutil和DiskUtility.app 可以区分,但我似乎没有Apple开源.

ps statfs(2)没有区分

macos iokit diskarbitration

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

string c_str()与data()

我已经阅读了几个地方,c_str()data()(在STL和其他实现中)之间的区别c_str()是总是空终止而data()不是.据我在实际实现中看到的,他们要么做同样的事情,要么做data()电话c_str().

我在这里错过了什么?在哪种情况下使用哪一个更正确?

c++ stl c-str

93
推荐指数
3
解决办法
4万
查看次数