using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Threading.Tasks; namespace JsonRPC4.Router { public class RawRpcParameter : IRpcParameter { public RpcParameterType Type { get; } public object Value { get; } public RawRpcParameter(RpcParameterType type, object value) { Type = type; Value = value; } public bool TryGetValue(Type type, out object value) { if (Type == RpcParameterType.Null) { value = null; return false; } if (Value == null) { value = null; return false; } Type type2 = Value.GetType(); if (type2 == type) { value = Value; return true; } TypeConverter converter = TypeDescriptor.GetConverter(type); if (converter != null && converter.CanConvertFrom(type2)) { value = converter.ConvertFrom(Value); return true; } if (TypeDescriptor.GetConverter(type2) != null && converter.CanConvertTo(type2)) { value = converter.ConvertTo(Value, type); return true; } value = null; return false; } } }