/// <summary>
        /// 客户端的属性值传递到服务器端,不会去改变服务器端的属性定义
        /// </summary>
        /// <param name="cpv"></param>
        /// <param name="pv"></param>
        public void ClientToServer(ClientPropertyValue cpv, PropertyValue pv)
        {
            cpv.NullCheck("cpv");

            if (pv != null)
            {
                pv.StringValue = cpv.StringValue;
            }
        }
        public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            ClientPropertyValue pv = new ClientPropertyValue();

            pv.Key         = DictionaryHelper.GetValue(dictionary, "key", string.Empty);
            pv.DataType    = DictionaryHelper.GetValue(dictionary, "dataType", ClientPropertyDataType.String);
            pv.StringValue = DictionaryHelper.GetValue(dictionary, "stringValue", string.Empty);

            return(pv);
        }
        public override IDictionary <string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            ClientPropertyValue pv = (ClientPropertyValue)obj;

            DictionaryHelper.AddNonDefaultValue(dictionary, "key", pv.Key);
            DictionaryHelper.AddNonDefaultValue(dictionary, "dataType", pv.DataType);
            DictionaryHelper.AddNonDefaultValue(dictionary, "stringValue", pv.StringValue);

            return(dictionary);
        }
        /// <summary>
        /// 如果目标集合中不存在,则添加一项
        /// </summary>
        /// <param name="pvc"></param>
        /// <param name="cpvc"></param>
        public void ServerToClient(IEnumerable <PropertyValue> pvc, ClientPropertyValueCollection cpvc)
        {
            pvc.NullCheck("pvc");
            cpvc.NullCheck("cpvc");

            foreach (PropertyValue pv in pvc)
            {
                ClientPropertyValue cpv = cpvc[pv.Definition.Name];

                if (cpv == null)
                {
                    cpv = new ClientPropertyValue(pv.Definition.Name);
                    cpvc.Add(cpv);
                }
                ClientPropertyValueConverter.Instance.ServerToClient(pv, cpv);
            }
        }
        public void ServerToClient(PropertyValue pv, ClientPropertyValue cpv)
        {
            pv.NullCheck("pv");
            cpv.NullCheck("cpv");

            cpv.DataType = pv.Definition.DataType.ToClientPropertyDataType();
            cpv.Key      = pv.Definition.Name;

            if (pv.StringValue.IsNullOrEmpty())
            {
                cpv.StringValue = pv.Definition.DefaultValue;
            }
            else
            {
                cpv.StringValue = pv.StringValue;
            }
        }