12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Net;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
-
- namespace Combot.Configurations
- {
- public class IPAddressConverter : JsonConverter
- {
- public override bool CanConvert(Type objectType)
- {
- return (objectType == typeof(IPAddress));
- }
-
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
- {
- IPAddress ip = (IPAddress)value;
- writer.WriteValue(ip.ToString());
- }
-
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
- {
- JToken token = JToken.Load(reader);
- return IPAddress.Parse(token.Value<string>());
- }
- }
-
- public class IPEndPointConverter : JsonConverter
- {
- public override bool CanConvert(Type objectType)
- {
- return (objectType == typeof(IPEndPoint));
- }
-
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
- {
- IPEndPoint ep = (IPEndPoint)value;
- writer.WriteStartObject();
- writer.WritePropertyName("Address");
- serializer.Serialize(writer, ep.Address);
- writer.WritePropertyName("Port");
- writer.WriteValue(ep.Port);
- writer.WriteEndObject();
- }
-
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
- {
- JObject jo = JObject.Load(reader);
- IPAddress address = jo["Address"].ToObject<IPAddress>(serializer);
- int port = jo["Port"].Value<int>();
- return new IPEndPoint(address, port);
- }
- }
- }
|