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; } }
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)); }