Compare commits

...

8 Commits

@ -4,4 +4,8 @@
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
</ItemGroup>
</Project> </Project>

@ -2,6 +2,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using Newtonsoft.Json;
namespace TupleStudy namespace TupleStudy
{ {
/// <summary> /// <summary>
@ -254,5 +256,31 @@ namespace TupleStudy
} }
} }
#endregion #endregion
#region 序列化问题
public string GetValueTupleJson()
{
var student = (userId: 1, userName: "wanggaofeng", userAge: 18);
var json = JsonConvert.SerializeObject(student);
return json;
}
/// <summary>
/// 解决方法:转换成匿名类
/// 不太优雅的方案,目前只能如此。
/// </summary>
public string GetValueTupleJsonSolve()
{
var student = (userId: 1, userName: "wanggaofeng", userAge: 18);
var anonymous = new
{
userId = student.userId,
userName = student.userName,
userAge = student.userAge,
};
var json = JsonConvert.SerializeObject(anonymous);
return json;
}
#endregion
} }
} }

@ -34,6 +34,9 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net461" /> <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
<package id="xunit" version="2.2.0" targetFramework="net461" /> <package id="xunit" version="2.2.0" targetFramework="net461" />
<package id="xunit.abstractions" version="2.0.1" targetFramework="net461" /> <package id="xunit.abstractions" version="2.0.1" targetFramework="net461" />

@ -204,6 +204,12 @@ namespace ValueTupleStudyTest
Assert.Equal(1, id); Assert.Equal(1, id);
Assert.Equal("wanggaofeng", name); Assert.Equal("wanggaofeng", name);
Assert.Equal(18, age); Assert.Equal(18, age);
//声明为变量:类型 + 变量
(int myId, string myName, int myAge) student = ValueTuple.Create(1, "wanggaofeng", 18);
Assert.Equal(1, student.myId);
Assert.Equal("wanggaofeng", student.myName);
Assert.Equal(18, student.myAge);
} }
/// <summary> /// <summary>
@ -231,6 +237,9 @@ namespace ValueTupleStudyTest
Assert.Equal(18, student3.userAge); Assert.Equal(18, student3.userAge);
} }
/// <summary>
/// 自定义名称
/// </summary>
[Fact] [Fact]
public void GetNamedValueTuple_Test() public void GetNamedValueTuple_Test()
{ {
@ -253,6 +262,9 @@ namespace ValueTupleStudyTest
Assert.Equal(18U, tuple.Item3); Assert.Equal(18U, tuple.Item3);
} }
/// <summary>
/// 不自定义名称
/// </summary>
[Fact] [Fact]
public void GetUnNamedValueTuple_Test() public void GetUnNamedValueTuple_Test()
{ {
@ -306,12 +318,34 @@ namespace ValueTupleStudyTest
} }
/// <summary> /// <summary>
/// Git-Flow 补丁测试 /// 注意序列化后自定义名字无效仍然使用Item1 等
/// </summary> /// </summary>
[Fact] [Fact]
public void Hotfix_Test() public void ValueTupleToJson_Test()
{ {
Assert.True(1 == 1); var json = valueTupleStudy.GetValueTupleJson();
Assert.Contains("Item1", json);
Assert.Contains("Item2", json);
Assert.Contains("Item3", json);
Assert.DoesNotContain("userId", json);
Assert.DoesNotContain("userName", json);
Assert.DoesNotContain("userAge", json);
}
[Fact]
public void ValueTupleToJson_Solve_Test()
{
var json = valueTupleStudy.GetValueTupleJsonSolve();
Assert.DoesNotContain("Item1", json);
Assert.DoesNotContain("Item2", json);
Assert.DoesNotContain("Item3", json);
Assert.Contains("userId", json);
Assert.Contains("userName", json);
Assert.Contains("userAge", json);
} }
} }
} }

@ -34,6 +34,9 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net47" />
<package id="xunit" version="2.4.0" targetFramework="net47" /> <package id="xunit" version="2.4.0" targetFramework="net47" />
<package id="xunit.abstractions" version="2.0.2" targetFramework="net47" /> <package id="xunit.abstractions" version="2.0.2" targetFramework="net47" />
<package id="xunit.analyzers" version="0.10.0" targetFramework="net47" /> <package id="xunit.analyzers" version="0.10.0" targetFramework="net47" />

@ -9,6 +9,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TupleStudyTest", "TupleStud
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ValueTupleStudyTest", "ValueTupleStudyTest\ValueTupleStudyTest.csproj", "{90707BA8-33B0-4EE7-ABF5-36303F2AAA18}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ValueTupleStudyTest", "ValueTupleStudyTest\ValueTupleStudyTest.csproj", "{90707BA8-33B0-4EE7-ABF5-36303F2AAA18}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Readme", "Readme", "{2F5BEE1B-618B-4951-97F6-53FC4897BBD6}"
ProjectSection(SolutionItems) = preProject
..\.NET Framework支持情况.png = ..\.NET Framework支持情况.png
..\.NET Framework支持情况.xlsx = ..\.NET Framework支持情况.xlsx
..\ValueTupleUseVersion.rar = ..\ValueTupleUseVersion.rar
EndProjectSection
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU

Loading…
Cancel
Save