diff --git a/TupleStudy/TupleStudy.csproj b/TupleStudy/TupleStudy.csproj
index 9f5c4f4..afada82 100644
--- a/TupleStudy/TupleStudy.csproj
+++ b/TupleStudy/TupleStudy.csproj
@@ -4,4 +4,8 @@
netstandard2.0
+
+
+
+
diff --git a/TupleStudy/ValueTupleStudy.cs b/TupleStudy/ValueTupleStudy.cs
index b2fddb3..21dbf59 100644
--- a/TupleStudy/ValueTupleStudy.cs
+++ b/TupleStudy/ValueTupleStudy.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Text;
+using Newtonsoft.Json;
+
namespace TupleStudy
{
///
@@ -39,7 +41,7 @@ namespace TupleStudy
///
/// 创建2元素的值元组
///
- public ValueTuple CreateValueTuple(T1 value1, T2 value2)
+ public ValueTuple CreateValueTuple(T1 value1, T2 value2)
{
var tuple = new ValueTuple(value1, value2);
@@ -89,7 +91,7 @@ namespace TupleStudy
///
/// 创建7元素的值元组
///
- public ValueTuple CreateValueTuple(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7)
+ public ValueTuple CreateValueTuple(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7)
{
var tuple = new ValueTuple(value1, value2, value3, value4, value5, value6, value7);
@@ -184,7 +186,7 @@ namespace TupleStudy
///
/// 创建8元素的值元组
///
- public (T1, T2, T3, T4, T5, T6, T7, TRest) GetValueTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, TRest item8) where TRest:struct
+ public (T1, T2, T3, T4, T5, T6, T7, TRest) GetValueTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, TRest item8) where TRest : struct
{
var tuple = ValueTuple.Create(item1, item2, item3, item4, item5, item6, item7, item8);
return tuple;
@@ -204,7 +206,7 @@ namespace TupleStudy
//回为函数返回值已经重命名,创建时再次命名已没有意义
//return (userId: 1, userName: "wanggaofeng", userAge: 18);
- return (1, "王高峰",18);
+ return (1, "王高峰", 18);
}
#endregion
@@ -254,5 +256,31 @@ namespace TupleStudy
}
}
#endregion
+
+ #region 序列化问题
+ public string GetValueTupleJson()
+ {
+ var student = (userId: 1, userName: "wanggaofeng", userAge: 18);
+ var json = JsonConvert.SerializeObject(student);
+ return json;
+ }
+
+ ///
+ /// 解决方法:转换成匿名类
+ /// 不太优雅的方案,目前只能如此。
+ ///
+ 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
}
}
diff --git a/TupleStudyTest/TupleStudyTest.csproj b/TupleStudyTest/TupleStudyTest.csproj
index 453b610..9426566 100644
--- a/TupleStudyTest/TupleStudyTest.csproj
+++ b/TupleStudyTest/TupleStudyTest.csproj
@@ -34,6 +34,9 @@
4
+
+ ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
diff --git a/TupleStudyTest/packages.config b/TupleStudyTest/packages.config
index f98995b..a32d6c2 100644
--- a/TupleStudyTest/packages.config
+++ b/TupleStudyTest/packages.config
@@ -1,5 +1,6 @@
+
diff --git a/ValueTupleStudyTest/ValueTupleStudyTest.cs b/ValueTupleStudyTest/ValueTupleStudyTest.cs
index 582a541..3576f8c 100644
--- a/ValueTupleStudyTest/ValueTupleStudyTest.cs
+++ b/ValueTupleStudyTest/ValueTupleStudyTest.cs
@@ -204,6 +204,12 @@ namespace ValueTupleStudyTest
Assert.Equal(1, id);
Assert.Equal("wanggaofeng", name);
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);
}
///
@@ -312,13 +318,34 @@ namespace ValueTupleStudyTest
}
///
- /// Git-Flow 补丁测试
+ /// 注意:序列化后,自定义名字无效,仍然使用Item1 等
///
[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);
}
- //发布v1.0
}
}
diff --git a/ValueTupleStudyTest/ValueTupleStudyTest.csproj b/ValueTupleStudyTest/ValueTupleStudyTest.csproj
index dee134a..049070e 100644
--- a/ValueTupleStudyTest/ValueTupleStudyTest.csproj
+++ b/ValueTupleStudyTest/ValueTupleStudyTest.csproj
@@ -34,6 +34,9 @@
4
+
+ ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
diff --git a/ValueTupleStudyTest/packages.config b/ValueTupleStudyTest/packages.config
index 5d9b8dc..3863694 100644
--- a/ValueTupleStudyTest/packages.config
+++ b/ValueTupleStudyTest/packages.config
@@ -1,5 +1,6 @@
+