首先让我介绍没有依赖注入的实现(这将打破依赖反转原则):
public class MyValidator
{
private readonly IChecksumGenerator _checksumGenerator;
public MyValidator()
{
_checksumGenerator = new MyChecksumGenerator();
}
...
}
Run Code Online (Sandbox Code Playgroud)
为了使此代码可测试,请注入IChecksumGenerator:
public class MyValidator
{
private readonly IChecksumGenerator _checksumGenerator;
public MyValidator(IChecksumGenerator checksumGenerator)
{
_checksumGenerator = checksumGenerator;
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在,如果需要,我们可以轻松地测试MyValidator和stub checksumGenerator。但是MyValidator实现在算法上与特定的IChecksumGenerator实现耦合(它不能与任何其他实现一起使用)。因此出现一些问题:
我想到的最好的解决方案是:
public class MyValidator
{
private readonly IChecksumGenerator _checksumGenerator;
public MyValidator()
{
_checksumGenerator = new MyChecksumGenerator;
}
internal MyValidator(IChecksumValidator checksumValidator)
{
_checksumValidator = checksumValidator;
}
...
}
Run Code Online (Sandbox Code Playgroud)
在这里,我介绍了用于测试目的的特殊构造函数(因此我可以在测试中对IChecksumValidator进行存根),但是公共构造函数将创建与之耦合的实现(因此封装不会中断)。创建一些用于测试目的的代码有点难看,但是看起来在这种情况下是有意义的。
您将如何解决这个问题?
我需要创建Razor帮助器的第二个重载,并希望从另一个帮助器调用一个帮助器(带有一些特定的参数).有没有办法实现它?
我有Razor函数输出一些数据,结果不返回任何东西(这是一个很长的故事,为什么这样做):
@functions
{
public static void SampleHelperMethod()
{
//...
}
}
Run Code Online (Sandbox Code Playgroud)
我现在怎么称呼呢?我试过@MyFunctions.SampleHelperMethod()但它不适用于void函数.
我看到CopyToAsync有CancellationToken争论。但我不需要CopyToAsync,因为我的代码已经在后台线程中执行。我只想进行CopyTo重载,CancellationToken每次复制 bufferSize 字节数时都会进行检查。有没有内置的实现?
我正在以周工作模式工作,我希望将可见时间范围限制为本周最早的活动和本周的最新活动.
我想解决问题的正确方法是手动过滤当前周可见的事件,找到最小和最大时间并将它们设置为minTime和maxTime属性.问题是我没有看到weekChanged回调(或类似的东西),这似乎是重新计算minTime和maxTime的正确位置.
我正在部署一个nuget包,这是TeamCity Feature Branch构建的结果.我使用的内部版本号格式包括分支名称:1.0.0.%build.counter% - %vcsroot.branch%.
我需要Octopus Deploy端的分支名称来自定义我的部署.将分支名称作为变量的正确方法是什么?
我有很多这样的日志:
Log.Information("Submitting order {@order}", order);
Run Code Online (Sandbox Code Playgroud)
该日志经过 RabbitMq -> LogStash -> Elastic,最终生成许多字段(我假设每个属性对应一个字段)。最终我在 Elastic 中拥有了成千上万的字段,这带来了各种各样的问题。
如果我将整个对象指定为参数,通常意味着我不太关心解析其所有字段,如果将其存储为单个字符串对象(但仍序列化为 json),我会非常高兴。有没有办法在 Serilog 中自定义它?
我有一个通常的html表,并希望添加ajax-paging(表数据应该重新加载).我确定应该有一些jQuery插件:)
.net ×3
c# ×3
asp.net-mvc ×2
razor ×2
ajax ×1
fullcalendar ×1
javascript ×1
jquery ×1
mysql ×1
pagination ×1
serilog ×1
teamcity ×1
xml ×1