forked from dotnetcore/WebApiClient
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJsonString.cs
72 lines (64 loc) · 1.67 KB
/
JsonString.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
namespace WebApiClientCore
{
/// <summary>
/// 定义JsonString的接口
/// </summary>
interface IJsonString
{
/// <summary>
/// 获取值
/// </summary>
object? Value { get; }
/// <summary>
/// 获取值类型
/// </summary>
Type ValueType { get; }
}
/// <summary>
/// 表示Json字符串
/// 该字符串为Value对象的json文本
/// </summary>
/// <typeparam name="T"></typeparam>
public sealed class JsonString<T> : IJsonString
{
/// <summary>
/// 获取类型值
/// </summary>
public T Value { get; }
/// <summary>
/// 获取类型值
/// </summary>
object? IJsonString.Value => this.Value;
/// <summary>
/// 获取值类型
/// </summary>
Type IJsonString.ValueType => typeof(T);
/// <summary>
/// Json字符串
/// </summary>
/// <param name="value">字符串对应的类型值</param>
public JsonString(T value)
{
this.Value = value;
}
/// <summary>
/// T类型隐式转换
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static implicit operator JsonString<T>(T value)
{
return new JsonString<T>(value);
}
/// <summary>
/// 类型隐式转换为T
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static implicit operator T(JsonString<T> value)
{
return value.Value;
}
}
}