using System; using System.Collections.Generic; using Newtonsoft.Json; using Jd.Api.Util; using Jd.Api.Request; namespace Jd.Api { public abstract class JdRequestBase : IJdRequest where T : JdResponse { IDictionary _addedParamters = new Dictionary(); /// /// 附加参数 /// public IDictionary AddedParam { get { return _addedParamters; } } /// /// API方法名称 /// public abstract String ApiName { get; } public String ApiVersion { get; set; } /// /// 增加附加参数 /// /// 参数名 /// 参数值 public void AddParam(String key, Object value) { _addedParamters.Add(key, value); } /// /// 移除附加参数 /// /// 参数名 /// public Boolean RemoveParam(String key) { return _addedParamters.Remove(key); } protected abstract void PrepareParam(IDictionary paramters); public virtual String GetParamJson() { var paramters = new Dictionary(); var param = new Dictionary(); PrepareParam(paramters); foreach (var added in paramters) { if (string.IsNullOrEmpty(added.Key) || added.Value == null || string.IsNullOrEmpty(added.Value.ToString())) continue; if (!param.ContainsKey(added.Key)) { param.Add(added.Key, added.Value); } } foreach (var added in _addedParamters) { if (!param.ContainsKey(added.Key)) { param.Add(added.Key, added.Value); } } return JsonConvert.SerializeObject(param, JdUtils.GetJsonConverters()); } public virtual void Validate() { } } }