Exemple #1
0
        /// <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));
            }
        }
Exemple #2
0
        /// <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();
        }
Exemple #4
0
        /// <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);
        }
Exemple #6
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public DefaultHttpClient()
 {
     jsonProvider = JsonFactory.GetProvider();
     client       = new HttpClient();
 }