2017-11-16 21:36:08 +08:00
|
|
|
using System;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
|
|
|
|
namespace k8s.Models
|
|
|
|
|
{
|
|
|
|
|
internal class IntOrStringConverter : JsonConverter
|
|
|
|
|
{
|
|
|
|
|
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
|
|
|
{
|
2017-11-24 12:19:44 +08:00
|
|
|
var s = (value as IntstrIntOrString)?.Value;
|
2017-11-16 21:36:08 +08:00
|
|
|
|
|
|
|
|
if (int.TryParse(s, out var intv))
|
|
|
|
|
{
|
|
|
|
|
serializer.Serialize(writer, intv);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
serializer.Serialize(writer, s);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
|
|
|
|
|
JsonSerializer serializer)
|
|
|
|
|
{
|
2017-11-24 12:19:44 +08:00
|
|
|
return (IntstrIntOrString) serializer.Deserialize<string>(reader);
|
2017-11-16 21:36:08 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override bool CanConvert(Type objectType)
|
|
|
|
|
{
|
|
|
|
|
return objectType == typeof(int) || objectType == typeof(string);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[JsonConverter(typeof(IntOrStringConverter))]
|
2017-11-24 12:19:44 +08:00
|
|
|
public partial class IntstrIntOrString
|
2017-11-16 21:36:08 +08:00
|
|
|
{
|
2017-11-24 12:19:44 +08:00
|
|
|
public static implicit operator int(IntstrIntOrString v)
|
2017-11-16 21:36:08 +08:00
|
|
|
{
|
|
|
|
|
return int.Parse(v.Value);
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-24 12:19:44 +08:00
|
|
|
public static implicit operator IntstrIntOrString(int v)
|
2017-11-16 21:36:08 +08:00
|
|
|
{
|
2017-11-24 12:19:44 +08:00
|
|
|
return new IntstrIntOrString(Convert.ToString(v));
|
2017-11-16 21:36:08 +08:00
|
|
|
}
|
|
|
|
|
|
2017-11-24 12:19:44 +08:00
|
|
|
public static implicit operator string(IntstrIntOrString v)
|
2017-11-16 21:36:08 +08:00
|
|
|
{
|
|
|
|
|
return v.Value;
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-24 12:19:44 +08:00
|
|
|
public static implicit operator IntstrIntOrString(string v)
|
2017-11-16 21:36:08 +08:00
|
|
|
{
|
2017-11-24 12:19:44 +08:00
|
|
|
return new IntstrIntOrString(v);
|
2017-11-16 21:36:08 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|