/// <summary> /// 将当前对象转化为其他类型,转化失败返回null /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static TResult ToObject <TResult>(this object obj) { string json; var provider = JsonFactory.GetProvider(); if (provider == null) { return(default(TResult)); } try { if (obj is string) { json = obj.ToString(); } else { json = provider.SerializeObject(obj); } return(provider.DeserializeObject <TResult>(json)); } catch (Exception) { return(default(TResult)); } }
/// <summary> /// 计算行记录的哈希值 /// 1-32位为表结构的哈希值,33-64位为数据的哈希值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity"></param> /// <param name="onlyStruct">仅计算表结构的哈希</param> /// <returns></returns> public static string GetEntityHash <T>(T entity, bool onlyStruct = false) { IJsonProvider jsonProvider = JsonFactory.GetProvider(); var tableInfo = TableInfo.GetTableInfo <T>(); string structMD5 = EncryptUtil.GetMD5(tableInfo.GetColumnsStr()); if (onlyStruct) { return(structMD5); } //计算数据的MD5时应该忽略BaseEntity中的所有可能的字段 var dataDict = GetEntityDict(entity, true); string dataMD5 = EncryptUtil.GetMD5(jsonProvider.SerializeObject(dataDict)); return(string.Format("{0}{1}", structMD5, dataMD5)); }
/// <summary> /// 构造函数 /// </summary> /// <param name="topic">主题名称</param> /// <param name="urls">Kakfa主机集合</param> public KafkaNetProvider(string topic, params string[] urls) { if (urls == null || urls.Length <= 0) { throw new ArgumentNullException("urls", "未配置Kafka服务器地址!"); } if (string.IsNullOrWhiteSpace(topic)) { throw new ArgumentNullException("topic", "主题名称不能为空!"); } _topicName = topic; _options = new KafkaOptions(ConvertToUrl(urls).ToArray()); _router = new BrokerRouter(_options); _producer = new Producer(_router); _consumer = new Consumer(new ConsumerOptions(_topicName, _router)); _jsonProvider = JsonFactory.GetProvider(); }
/// <summary> /// 将当前对象序列化为JSON字符串 /// </summary> /// <typeparam name="TSource"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static string ToJson <TSource>(this TSource obj) { var provider = JsonFactory.GetProvider(); if (provider == null) { return(obj.ToString()); } else { try { return(provider.SerializeObject(obj)); } catch (Exception) { return(string.Empty); } } }
/// <summary> /// 构造函数 /// </summary> /// <param name="connStr">Redis连接字符串</param> /// <param name="db">DB信息</param> public StackExchangeRedisProvider(string connStr, int db = 0) { _jsonProvider = JsonFactory.GetProvider(); if (string.IsNullOrWhiteSpace(connStr)) { Logger.Error("Redis连接字符串配置错误"); throw new ArgumentNullException("connStr", "Redis连接字符串配置错误!"); } try { _redisConn = ConnectionMultiplexer.Connect(connStr); } catch (Exception ex) { Logger.Error("Redis连接超时,请检查连接配置!", ex); throw new TimeoutException("Redis连接超时,请检查连接配置!"); } _redisDB = _redisConn.GetDatabase(db); }
/// <summary> /// 构造函数 /// </summary> public DefaultHttpClient() { jsonProvider = JsonFactory.GetProvider(); client = new HttpClient(); }