public void SetDefaultValue(object value)
 {
     if (value != null)
     {
         if (IsBasicValue)
         {
             _basicDefaultValueObject.SetValue(value);
         }
         else
         {
             _complexDefaultValueObject = value;
         }
     }
     else
     { // 清除
         if (IsBasicValue)
         {
             _basicDefaultValueObject = null;
         }
         else
         {
             _complexDefaultValueObject = null;
         }
     }
 }
        /// <summary>
        /// 创建Array类型的ProcessParameter,目前仅支持BasicValue类
        /// </summary>
        /// <param name="level1Item"></param>
        /// <returns></returns>
        /// sunjian 2019-12-23
        private static Parameter CreateProcessParameterArray(XmlElement level1Item)
        {
            var strName = level1Item.GetAttribute("Name");
            var strType = level1Item.GetAttribute("Type");

            var listParameter = new List <BasicValue>();

            var level2Node = (XmlNode)level1Item;

            foreach (XmlElement xmlElement in level2Node)
            {
                if (string.Equals(xmlElement.Name, "ProcessParameterItem", StringComparison.CurrentCultureIgnoreCase))
                {
                    var itemValue  = xmlElement.GetAttribute("Value");
                    var basicValue = new BasicValue(strType, itemValue);
                    listParameter.Add(basicValue);
                }
                else
                {
                    throw new ArgumentOutOfRangeException(
                              $"{xmlElement.Name}名称不合法,请检查配置手册,目前ProcessParameterArray仅支持ProcessParameterItem。");
                }
            }

            var parameter = new Parameter(strName, "List" /*Parameter的类型为list,但是list内参数的类型由Type中读取到的字符串来定义。*/, null, listParameter);

            return(parameter);
        }
        private static Parameter CreateProcessParameter(XmlElement level1Item)
        {
            Parameter parameter;
            var       strName = level1Item.GetAttribute("Name");
            var       strType = level1Item.GetAttribute("Type");

            if (level1Item.HasAttribute("DefaultValue"))
            {
                //参数有默认值
                // 默认值只可以是整数或字符串类型
                var defaultValue = BasicValue.ConvertValueString(strType, level1Item.GetAttribute("DefaultValue"));
                parameter = new Parameter(strName, strType);
                parameter.SetDefaultValue(defaultValue);
            }
            else
            {
                switch (strType.ToLower())
                {
                //参数无默认值
                case "object" when level1Item.HasAttribute("ComplexObjectType"):
                {
                    // 复杂参数类型
                    var strComplexObjectType = level1Item.GetAttribute("ComplexObjectType");
                    parameter = new Parameter(strName, strType, strComplexObjectType);
                    break;
                }

                case "customized" + "type" when level1Item.HasAttribute("ComplexObjectType"):
                {
                    // 定制化类型
                    var strComplexObjectType = level1Item.GetAttribute("ComplexObjectType");
                    //ICustomizedType customizedType = CustomizedTypeManager.GetCustomizedType();
                    parameter = new Parameter(strName, "CustomizedType", strComplexObjectType);
                    break;
                }

                default:     // 简单参数类型
                    parameter = new Parameter(strName, strType);
                    break;
                }
            }

            return(parameter);
        }
        public void SetValue(object value)
        {
            //sunjian 2019-01-02
            switch (value)
            {
            case List <BasicValue> parameterArray:
                _processParameterList = parameterArray;

                return;

            case Dictionary <string, BasicValue> dicKeyValue:
                _processParameterDictionary = dicKeyValue;
                break;
            }


            if (value != null)
            {
                _hasValue = true;
                if (IsBasicValue)
                {
                    _basicValueObject.SetValue(value);
                }
                else
                {
                    _complexValueObject = value;
                }
            }
            else
            { // 清除
                _hasValue = false;

                if (IsBasicValue)
                {
                    _basicValueObject = null;
                }
                else
                {
                    _complexValueObject = null;
                }
            }
        }
        public Parameter(string parameterName, string parameterType, string strComplexTypeName = null, object complexParameter = null)
        {
            _name    = parameterName;
            _strType = parameterType;

            //string strComplexTypeName1 = strComplexTypeName; //20180428注释Robin

            switch (parameterType.ToLower())
            {
            case "object":
                // 参数为对象类型
                _complexValueObject        = CreateComplexObject(strComplexTypeName);
                _complexDefaultValueObject = CreateComplexObject(strComplexTypeName);

                IsBasicValue = false;
                break;

            //sunjian 2019-12-23 增加Process Parameter Array的设定
            case "list":
                _processParameterList = complexParameter as List <BasicValue>;

                IsBasicValue = false;
                break;

            //sunjian 2019-12-23 增加Process Parameter Array的设定
            case "dictionary":
                _processParameterDictionary = complexParameter as Dictionary <string, BasicValue>;

                IsBasicValue = false;
                break;

            default:
                // 参数为基本类型
                _basicValueObject        = new BasicValue(parameterType); //dongmin 新增
                _basicDefaultValueObject = new BasicValue(parameterType);

                IsBasicValue = true;
                break;
            }
        }
Example #6
0
 protected internal override bool IsSubTypeOf(BasicValue value, BasicValue expected)
 {
     return(base.IsSubTypeOf(value, expected) || Check.invocableInterface(expected.Type, value.Type));
 }
 public void SetDefaultValueInString(string strValue)
 {
     SetDefaultValue(BasicValue.ConvertValueString(_strType, strValue));
 }