using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace JsonRPC4.Common { public class RpcError { public int Code { get; } public string Message { get; } public object Data { get; } public Type DataType { get; } public RpcError(RpcErrorCode code, string message, object data = null) : this((int)code, message, data) { } public RpcError(int code, string message, object data = null) { if (string.IsNullOrWhiteSpace(message)) { throw new ArgumentNullException("message"); } Code = code; Message = message; Data = data; DataType = data?.GetType(); } public RpcException CreateException() { return new RpcException(Code, Message, null, Data); } } public class RpcError : RpcError { public new T Data => (T)base.Data; public RpcError(RpcErrorCode code, string message, T data) : base(code, message, data) { } public RpcError(int code, string message, T data) : base(code, message, data) { } } }