问题列表 - 第10066页

如何将可设计组件与依赖注入相结合

在创建可设计的.NET组件时,您需要提供默认构造函数.从IComponent文档:

要成为组件,类必须实现IComponent接口并提供不需要参数的基本构造函数或IContainer类型的单个参数.

这使得无法通过构造函数参数进行依赖注入.(可以提供额外的构造函数,但设计者会忽略它们.)我们正在考虑的一些替代方案:

  • 服务定位器

    不要使用依赖注入,而是使用服务定位器模式来获取依赖项.这似乎是IComponent.Site.GetService适用于.我想我们可以创建一个可重用的ISite实现(ConfigurableServiceLocator?),它可以配置必要的依赖项.但是这如何在设计师环境中起作用?

  • 通过属性进行依赖注入

    通过属性注入依赖项.如果需要在设计器中显示组件,请提供默认实例.记录需要注入哪些属性.

  • 使用Initialize方法注入依赖项

    这很像注入属性,但它保留了需要在一个地方注入的依赖项列表.这样,隐式记录了所需依赖项列表,编译器将在列表更改时帮助您解决错误.

知道最好的做法是什么吗?你怎么做呢?


编辑:我已经删除了"(例如一个WinForms UserControl)",因为我打算将这个问题放在一般的组件上.组件都是关于控制的反转(参见UMLv2规范的第8.3.1节),所以我认为"你不应该注入任何服务"是一个很好的答案.


编辑2:花了一些玩WPF和MVVM模式最终"得到"马克的答案.我现在看到视觉控制确实是一个特例.至于在设计器表面上使用非可视组件,我认为.NET组件模型从根本上与依赖注入不兼容.它似乎是围绕服务定位器模式设计的.也许这将随着System.ComponentModel.Composition命名空间中.NET 4.0中添加的基础结构而改变.

.net components dependency-injection service-locator

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

C#中"With ... End With"的等价性?

我知道C#有using关键字,但会using自动处理对象.

With...End WithVisual Basic 6.0中是否存在等价?

c# vb.net with-statement

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

百分比和树木

我有一棵无序的树.每个节点代表一个可以完成(1),未完成(0)或具有子任务的任务.

例如:

1
-1.1
-1.2
--1.2.1
--1.2.2
-1.3
2
3
-3.1
4
-4.1
--4.1.1
5
Run Code Online (Sandbox Code Playgroud)

假设叶子1.2.1,3.1和5 完成了

1
-1.1
-1.2
--1.2.1*
--1.2.2
-1.3
2
3
-3.1*
4
-4.1
--4.1.1
5*
Run Code Online (Sandbox Code Playgroud)

我想计算每个节点的完整性百分比.叶子很容易用0%或100%计算,但如何计算所有其他叶子?

此刻,我从叶子上走树,每个节点根据孩子的完整性百分比计算.例如:

1      50%
-1.1*  100%
-1.2   0%
2      0%
3      33%
-3.1*  100%
-3.2   0%
-3.3   0%
Run Code Online (Sandbox Code Playgroud)

现在,更多的孩子被添加到1.2(这不再是一片叶子,而是成为一个节点).如果孩子们"没有完成",1.2总是0%,因此1是50%,但我希望1 小于 50%,因为,他的子女和子女要完成任务的数量为了它完成100%更大!

1       50%
-1.1*   100%
-1.2    0%
--1.2.1 0%
--1.2.2 0%
2       0%
3       33%
-3.1*   100%
-3.2    0%
-3.3    0%
Run Code Online (Sandbox Code Playgroud)

计算这个的最佳方法是什么?谢谢

math tree

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

SQLite3和多个进程

当多个进程访问单个SQLite数据库文件时,如何确保正确性?

c sqlite concurrency

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

CodeIgniter会话

我正在尝试使用第三方脚本并解压缩登录用户userid.我知道CodeIgniter使用某种加密会话.你能否建议如何获得用户ID.一个简单的$ _SESSION似乎不起作用.

我基本上运行一个单独的脚本,我只想要会话详细信息,即用户ID.但我不想将此脚本修改为MVC模型.我想尽可能少地修改它.

对不起,我是CodeIgniter的新手.感谢您的时间.

php codeigniter

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

如何显示地图内容?

我有一张地图

map < string , list < string > > mapex ; list< string > li;
Run Code Online (Sandbox Code Playgroud)

如何在控制台上显示上述地图项.

c++ dictionary stl stdmap

32
推荐指数
4
解决办法
8万
查看次数

.net引用的特定版本是真还是假?

我们是两家在同一个应用程序中处理同一项目的公司.每周我们交换我们的程序集(不是代码)并引用彼此的dll.

specificversion添加对项目的引用时的最佳实践是什么?具体来说,我们什么时候应该使用一个specificversion值,true在什么情况下我们应该使用它false.

.net dll reference

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

选择多个选项

我的头撞在墙上看似死得很简单.

这里是:

<html>
    <head></head>
    <body>
        <form method="post" action="action.php">
            <div><input type="checkbox" name="test" value="Newspaper"> <span >Newspaper</span></div>
            <div><input type="checkbox" name="test" value="PC"> <span >PC</span></div>
            <div><input type="checkbox" name="test" value="Home"> <span >Home</span></div>
            <div><input type="checkbox" name="test" value="Dont_know"> <span >dnunno</span></div>
            <input type="submit" name="Submit" value="send">
        </form>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是当我选择多个选项时.我在我的print_r($_POST);陈述中只看到最后选择的选项而不是所有选定的选项.我应该怎么处理这个?

更新:我检查了我的其余代码,我看到这是由一些JavaScript完成的.

else if (aform.validatorArr[i][4] == "checkbox") {
    var fvs = "";
    eval("var chkbArray=aform." + aform.validatorArr[i][1] + ";");
    if (aform.validatorArr[i][2] == "cb_true") {
        for (k = 0; k < chkbArray.length; k++) {
            if (chkbArray[k].checked) {
                fvs += chkbArray[k].value;
                console.log(fvs); …
Run Code Online (Sandbox Code Playgroud)

html php

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

设计压力测试框架

我对一个非常大的产品(想想操作系统大小)进行了一种集成/压力测试,最近我和我的团队一直在讨论如何更好地组织我们的测试工作负载.到目前为止,我们已经满足于将所有(自定义)工作负载应用程序放在一系列批处理类型的作业中,每个作业都代表一次压力测试运行.现在我们正处于平均测试运行涉及跨13个系统运行的100个工作负载的点,我们认为是时候构建更高级的东西了.

我已经看到很多关于单元测试框架的内容,但对于更高级别的压力类型测试却很少见.有没有人知道管理大量工作负载的问题得到解决的常见(或不常见)方式?

现在我们想保留每个工作负载的数据库并提供一个前端,根据我们在特定日期需要的压力,将它们混合并匹配到测试包中,但是我们没有任何示例.最好的方法来做更高级的事情,例如排列每个工作负载放在系统上的压力.

我对大型产品的压力测试员做了什么?对我们来说,一些手动脚本不会再削减它了.

frameworks stress-testing

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

Erlang的隐藏功能

本着:

  • C#的隐藏功能
  • Java的隐藏功能
  • ASP.NET的隐藏功能
  • Python的隐藏功能
  • HTML的隐藏功能
  • 和其他隐藏的功能问题

每个Erlang开发人员都应该注意Erlang的隐藏功能是什么?

请回答一个隐藏的功能.

erlang hidden-features

17
推荐指数
10
解决办法
1万
查看次数