小编Sib*_*Guy的帖子

处理xml而不加载到内存中

如果我无法将整个文件加载到内存中,那么处理XML的最佳方法是什么?

.net c# xml

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

依赖注入和特定的依赖实现

首先让我介绍没有依赖注入的实现(这将打破依赖反转原则):

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实现耦合(它不能与任何其他实现一起使用)。因此出现一些问题:

  1. 我们引入了可能会注入错误的IChecksumGenerator的可能性(例如,由于IoC容器配置错误)
  2. 由于MyValidator的私有实现细节(耦合到MyChecksumGenerator)超出了类,因此我们破坏了封装

我想到的最好的解决方案是:

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进行存根),但是公共构造函数将创建与之耦合的实现(因此封装不会中断)。创建一些用于测试目的的代码有点难看,但是看起来在这种情况下是有意义的。

您将如何解决这个问题?

.net c# dependency-injection

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

长字符串的MySQL索引

我有MySQL InnoDb表,我想存储长(限制是20k符号)字符串.有没有办法为这个字段创建索引?

mysql

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

从另一个人那里召唤一个Razor助手

我需要创建Razor帮助器的第二个重载,并希望从另一个帮助器调用一个帮助器(带有一些特定的参数).有没有办法实现它?

asp.net-mvc razor

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

剃刀虚空功能

我有Razor函数输出一些数据,结果不返回任何东西(这是一个很长的故事,为什么这样做):

@functions
{
  public static void SampleHelperMethod()
  {
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

我现在怎么称呼呢?我试过@MyFunctions.SampleHelperMethod()但它不适用于void函数.

asp.net-mvc razor

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

带有 CancellationToken 参数的 CopyTo

我看到CopyToAsyncCancellationToken争论。但我不需要CopyToAsync,因为我的代码已经在后台线程中执行。我只想进行CopyTo重载,CancellationToken每次复制 bufferSize 字节数时都会进行检查。有没有内置的实现?

.net c# cancellation-token

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

将minTime和maxTime特定应用于当前周

我正在以周工作模式工作,我希望将可见时间范围限制为本周最早的活动和本周的最新活动.

我想解决问题的正确方法是手动过滤当前周可见的事件,找到最小和最大时间并将它们设置为minTime和maxTime属性.问题是我没有看到weekChanged回调(或类似的东西),这似乎是重新计算minTime和maxTime的正确位置.

javascript fullcalendar

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

从TeamCity构建中获取分支名称

我正在部署一个nuget包,这是TeamCity Feature Branch构建的结果.我使用的内部版本号格式包括分支名称:1.0.0.%build.counter% - %vcsroot.branch%.

我需要Octopus Deploy端的分支名称来自定义我的部署.将分支名称作为变量的正确方法是什么?

teamcity octopus-deploy

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

如何在 Serilog 中将对象序列化为字符串?

我有很多这样的日志:

Log.Information("Submitting order {@order}", order);
Run Code Online (Sandbox Code Playgroud)

该日志经过 RabbitMq -> LogStash -> Elastic,最终生成许多字段(我假设每个属性对应一个字段)。最终我在 Elastic 中拥有了成千上万的字段,这带来了各种各样的问题。

如果我将整个对象指定为参数,通常意味着我不太关心解析其所有字段,如果将其存储为单个字符串对象(但仍序列化为 json),我会非常高兴。有没有办法在 Serilog 中自定义它?

serilog

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

jQuery表分页

我有一个通常的html表,并希望添加ajax-paging(表数据应该重新加载).我确定应该有一些jQuery插件:)

ajax jquery pagination

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