123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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;
- }
- }
- }
|