我有HashSet参数的方法.我需要在其中做不区分大小写的包含:
public void DoSomething(HashSet<string> set, string item)
{
var x = set.Contains(item);
...
}
Run Code Online (Sandbox Code Playgroud)
是否可以使现有的HashSet不区分大小写(不创建新的)?
我正在寻找具有最佳性能的解决方案.
编辑
包含可以多次调用.因此,由于性能低于本机HashSet Contains方法,IEnumerable扩展对我来说是不可接受的.
解
既然,回答我的问题是NO,那是不可能的,我已经创建并使用了以下方法:
public HashSet<string> EnsureCaseInsensitive(HashSet<string> set)
{
return set.Comparer == StringComparer.OrdinalIgnoreCase
? set
: new HashSet<string>(set, StringComparer.OrdinalIgnoreCase);
}
Run Code Online (Sandbox Code Playgroud) 这是一篇关于一些扩展HTTP代码的文章:
IIS 7.0,IIS 7.5和IIS 8.0定义了几个HTTP状态代码,指示401错误的更具体原因.以下特定HTTP状态代码显示在客户端浏览器中,但不显示在IIS日志中:
- 401.1 - 登录失败.
- 401.2 - 由于服务器配置登录失败.
- 401.3 - 由于资源上的ACL而未经授权.
- 401.4 - 过滤器授权失败.
- 401.5 - ISAPI/CGI应用程序授权失败.
我需要一些自定义扩展HTTP代码,如下所示:
- 401.10 - 找不到用户
- 401.11 - 用户密码不匹配
- 401.12 - 用户帐户被锁定
- 401.13 - 用户帐户已过期
- ...
如何从.NET MVC应用程序返回这些扩展的401错误代码?
我正在使用JSON进行数据交换.我正在使用JSON.NET框架.
我上课了:
public class CarEntity
{
public string Model { get; set; }
public int Year { get; set; }
public int Price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有以下代码:
public void Test()
{
var jsonString =
@"{
""Model"": ""Dodge Caliber"",
""Year"": 2011,
""Price"": 15000,
""Mileage"": 35000
}";
var parsed = (CarEntity)JsonConvert.DeserializeObject(jsonString, typeof(CarEntity));
}
Run Code Online (Sandbox Code Playgroud)
由于CarEntity类中没有"里程"字段,因此需要对其进行日志警告:
未知字段:里程= 35000
有办法吗?
为了验证该方法是否被调用,我们应该使这个方法可以验证:
// arrange
mock
.Setup(foo => foo.SomeMethod("param1", "param2", "param3", "param4"))
.Verifiable();
Run Code Online (Sandbox Code Playgroud)
然后我们可以这样做:
// assert
mock
.Verify(foo => foo.SomeMethod("param1", "param2", "param3", "param4"));
Run Code Online (Sandbox Code Playgroud)
我想避免这个重复的代码...在复杂测试的情况下,代码变得过载且不可读.
所以我的问题是如何在排列部分中制作可验证的所有方法(带有任何参数)?
我知道VerifyAll():
// assert
mock.VerifyAll();
Run Code Online (Sandbox Code Playgroud)
但它有一个缺点:实际验证的是不明显的.所以我正在寻找一些替代方案.
应用程序意外崩溃,堆栈溢出错误.经过研究,我发现崩溃的原因是遵循以下代码:
foreach (var item in items)
{
result = result.Concat(item.Data);
}
Run Code Online (Sandbox Code Playgroud)
这是多个IEnumerables的连接.应用程序在items包含10,000个元素时崩溃.
SelectMany解决了这个问题.但还是......
为什么Concat扩展导致堆栈溢出?
c# ×5
.net ×2
asp.net-mvc ×1
hashset ×1
json ×1
json.net ×1
linq ×1
moq ×1
nunit ×1
unit-testing ×1