小编Bob*_*erg的帖子

测试依赖于Enterprise Library的代码,即使它不提供接口?

也许我表现出我对依赖注入和测试缺乏了解,但我不明白如何使用依赖注入与不实现接口的类有助于我进行测试?

例如,在Enterprise Library 5.0文档中,它讨论了使用Unity容器创建实例.它说这有助于"可测试性:在使用依赖注入样式时,将类与依赖关系隔离起来是微不足道的." MSDN

如何在我的单元测试装置中使用它?他们的示例有一个构造函数,其参数为类而不是接口:

public class TaxCalculator 
{
  private ExceptionManager _exceptionManager;
  private LogWriter _logWriter;

  public TaxCalculator(ExceptionManager em, LogWriter lw) 
  {
    this._exceptionManager = em;
    this._logWriter = lw;
  }
}
Run Code Online (Sandbox Code Playgroud)

c# unit-testing enterprise-library dependency-injection

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

用html拒绝基于Ajax JSON的帖子

当使用JQuery的$ .Ajax(..)将包含标记的JSON对象发布到MVC操作方法时,我惊讶地发现ASP.Net的请求验证不会拒绝该内容.

有没有理由将请求验证应用于JSON帖子?

使用以下定义,服务器不会拒绝标记...

$.ajax({
        url: '/Controller/Action',
        data: JSON.stringify({data:data}),
        type: "POST",
        dataType: "json",
        contentType: "application/json",
      }); 
Run Code Online (Sandbox Code Playgroud)

好像它与JSON类型的帖子有关

我正在使用.Net 4.0 MVC 3.0

我正在创建将注释保存到数据库的功能.看起来像标记/脚本可以使其通过请求验证的安全问题...

我张贴的各种特性(例如commentText)出于某种原因,它不拒绝我的帖子JSON对象,如果它包含标记像<div></div>

在这里找到一篇似乎解释行为的文章:

http://weblogs.asp.net/imranbaloch/archive/2011/05/23/security-issue-in-asp-net-mvc3-jsonvalueproviderfactory.aspx

asp.net asp.net-mvc

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

如何有效地对 SQL 数据库中的记录进行版本控制

至少在一个应用程序中,我需要在关系数据库中保留旧版本的记录。当应该更新某些内容时,将添加一个新副本,并将旧行标记为非当前行。当应删除某些内容时,应将其标记为非当前或已删除。

有一个简单的用例:记录的新版本只能在当前时间添加,每个版本取代一行。这可用于在保存新数据时存档以前的记录。为此,我会将以下列添加到每个表中:

VersionTime datetime -- Time when this versions becomes effective
IsCurrent bool -- Indicates whether this version is the most current (and not deleted)
Run Code Online (Sandbox Code Playgroud)

如果您只需要知道记录的最新版本是什么,并且只需要单独枚举单个记录的先前版本,那么这很好。时间点查询比第二种变体更痛苦。

一个更通用的变体是这样的:可以在任何指定的有效时间范围内随时添加记录的版本。所以我可以声明一个实体的某些设置在 2013 年底之前有效,它的另一个版本在 2014 年有效,另一个版本将从 2015 年开始有效。这可用于存档旧数据(如上),并提前计划在未来某个时间使用不同的数据(并将此信息保存为存档)。为此,我会将以下列添加到每个表中:

ValidFrom datetime -- Time when this version becomes valid (inclusive)
ValidTo datetime -- Time when this version becomes invalid (exclusive)
Run Code Online (Sandbox Code Playgroud)

第二种方法基本上也可以代表第一种方法,但很难知道哪个版本是最新的 - 因为您还可以为将来添加版本。此外,ValidFrom/ValidTo 设计能够声明重叠范围,并且根据定义,具有最高 ValidFrom 的行应适用于这种情况。

现在我想知道如何实施有效的解决方案来管理和查询此类数据。通常,您可以使用任何类型的 WHERE、GROUP BY 和 JOIN 编写任何 SQL 查询来获取您想要的记录。但是应用版本控制后,您需要考虑每条记录的正确版本。因此,不是连接来自另一个表的记录的每个版本,而是必须添加适当的条件以仅选择在给定时间有效的版本。

一个例子:

SELECT a, b, c
FROM t1
Run Code Online (Sandbox Code Playgroud)

必须改为:

SELECT a, b, c
FROM …
Run Code Online (Sandbox Code Playgroud)

sql database database-design version

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

在Java中,防止在实例方法返回后更改字段

在我大学的一个软件开发课上,老师一直提到在测验中我们需要确保吸气剂返回的磁场需要"保护".我想她的意思是课外的任何东西都不应该改变它.她没有提供更多的解释.

例如:

class Foo {
    string[] bar = <some array contents>;

    public string[] getBar() {
        return bar;
    }
}
Run Code Online (Sandbox Code Playgroud)

任何调用getBar的代码都可以修改该数组中的元素.你怎么防止这种情况发生?我假设对象本身应该能够修改数组,而不是对象之外的任何东西.

这不是作业帮助,因为测验是几周之久.我只是想更好地理解Java,因为我的老师没有很好地解释.

更新:教师不仅允许我们在场上使用protected作为访问修饰符.

java

4
推荐指数
2
解决办法
3448
查看次数

XmlSerializer找不到文件C:\ Windows\Temp\*.dll

我有一个ASP.NET 2.0 Web应用程序在一个众所周知的Web托管提供商的共享服务器上运行.偶尔我似乎得到这样的错误:

找不到文件'C:\ WINDOWS\TEMP\lxnmfrsz.dll'.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.IO.FileNotFoundException:找不到文件'C:\ WINDOWS\TEMP\lxnmfrsz.dll'.

我四处寻找,似乎这是一个常见的问题.一种解决方案是清除临时文件夹或重新启动IIS.由于我不能在我不拥有的服务器上访问这些东西,所以这些并不是真正的选择.我已经尝试使用web.config中的指令将temp目录设置为其他目录,但它似乎仍然使用默认的临时目录.还有其他方法可以更改临时目录和/或解决此问题吗?

c# asp.net xml-serialization

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

如何使用Entity Framework 4.1,POCO和存储库模式设计应用程序

我正在尝试使用Enterprise Library 4.1在ASP.NET MVC中设计一个应用程序我添加了Entity Framework POCO模板并将生成的实体移动到一个单独的"Entities"项目中.但是,我很难确定设计此应用程序的最佳方法.我假设ObjectContext应该与EDMX文件在同一个项目中.但是ObjectContext必须能够访问POCO.如果我创建存储库,则需要访问POCO和ObjectContext.我假设存储库逻辑和POCO应该在同一个项目中,但这不起作用,因为"POCO项目"和"EDMX项目"之间会有一个循环引用.我不想将ObjectContext放在"POCO项目"中,因为该项目不应该引用System.Data.

我已经四处搜索了一些例子,但几乎所有的例子我发现这个例子并没有使用最佳实践.也许我让这太复杂了.我只是想了解如何最好地设计应用程序.

entity-framework repository poco efpocoadapter entity-framework-4

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

.net 4.5异步语法

我写下面的代码,

Task.Factory.StartNew<int>(async () =>
        {
            await Task.Delay(1000);
            return 42;
        });
Run Code Online (Sandbox Code Playgroud)

但是读取行出现在"async"关键字下,并且由于某些语法错误导致代码无法编译,有人可以建议我该怎么做?

多谢!

async-await .net-4.5

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

我们可以在内联网上使用WCF吗?

我正在尝试使用WPF为大学构建一个小应用程序,它不是一个网络应用程序,我正在使用sql server 2008用于此目的,我很想知道WCF是否可以用于此目的,并且请让我们知道为什么以及为什么不为此目的使用WCF.

DB在包含所有类等的代码库项目中处理.

谢谢你的时间.

wcf

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