编写了一个Custom JsonConverter来处理同一API的不同版本返回的不同Json格式。一个应用程序向其他几个应用程序发出请求,而我们不知道将返回哪种格式,因此JsonConverter可以处理此问题,并且看起来效果很好。除了没有找到有用的资源来模拟一些Newtonsoft.Json对象(主要是JsonReader)之外,我需要向项目添加单元测试。
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JObject jsonValue = JObject.Load(reader);
if(jsonValue == null)
{
return null;
}
var responseData = ReadJsonObject(jsonValue);
return responseData;
}
[TestMethod]
public void ReadJsonReturnNullForNullJson()
{
var converter = new DataConverter();
_mockJsonReader.Setup(x => x.Value).Returns(null);
var responseData = converter.ReadJson(_mockJsonReader.Object, typeof(ProbeResponseData), null, _mockJsonSerializer.Object);
Assert.IsNull(responseData);
}
Run Code Online (Sandbox Code Playgroud)
一些代码已从ReadJson方法中删除。我正在尝试安装JsonReader以返回实际json的值,在这种情况下为空值,但是在其他单元测试中,我想要一个实际的Json(JObject)。运行单元测试时,我收到“ Newtonsoft.JsonReaderException:从JsonReader读取JObject时出错。路径”。
我在 css 中努力让我的 flexbox 显示垂直等距的列中的项目,因此列的每一行之间的空间均匀。
html, body,
.flex-container {
margin: 0;
height: 100%;
width: 100%;
}
body {
font-family: 'Droid Sans', sans-serif;
overflow: hidden;
background-color: #2b2b2b;
}
.flex-container {
display: -webkit-flex;
display: flex;
flex-direction: column;
display: flex;
justify-content: center;
align-items: center;
background-color: #2b2b2b;
}
img {
border-radius: 50%;
max-width: 400px;
max-height: auto;
}
.home-flex {
display: flex;
justify-content: space-around;
align-items: center;
flex-wrap: wrap;
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flex-container">
<h1>Name</h1>
<img src="image.png">
<div class="home-flex">
<a title="twitter" href="#">
<i>twitter</i>
</a>
<a title="github" …
Run Code Online (Sandbox Code Playgroud)本周早些时候,C#7.2发布了"in"参数修饰符的新功能,请参阅此处的发行说明
发行说明中提供的详细信息包括:"参数的修饰符,用于指定参数通过引用传递但不被调用方法修改."
关于这个新功能还没有很多文档,所以我一直在尝试.似乎对原始类型按预期工作,并阻止访问对象属性.但是,对于列表,您仍然可以调用方法来修改List(即添加,删除,反向),您可以直接修改元素.
static void Main(string[] args)
{
var test = new List<int>();
test.Add(5);
Console.WriteLine(test[0]);
TestMethod(test);
Console.WriteLine(test[0]);
}
public static void TestMethod(in List<int> myList)
{
myList[0] = 10;
myList.Add(7);
myList.Remove(2);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么在使用"in"参数修饰符时仍然可以修改集合?