private void adjustParamType() { if (_var != null) { bool bOK = false; _valType.SetDataType(new DataTypePointer(new TypePointer(typeof(Type)))); _valType.SetConstructorTypeScope(_var.ObjectType); DataTypePointer vType; if (_var.VariableLibType == null) { vType = new DataTypePointer(_var.VariableCustomType); } else { vType = new DataTypePointer(new TypePointer(_var.VariableLibType)); } DataTypePointer dp = _valType.ConstantValue.Value as DataTypePointer; if (dp != null) { bOK = vType.IsAssignableFrom(dp); } if (!bOK) { _valType.SetValue(vType); dp = vType; } if (!vType.IsAssignableFrom(_val.DataType)) { _val.SetDataType(dp); } } }
private void adjustParamType() { checkVariable(); if (_var != null) { bool bOK = false; _valType.SetDataType(new DataTypePointer(new TypePointer(typeof(Type)))); bool isString = (typeof(JsString).Equals(_var.BaseClassType) || typeof(PhpString).Equals(_var.BaseClassType)); _valType.SetConstructorTypeScope(_var.BaseClassType); DataTypePointer dp = _valType.ConstantValue.Value as DataTypePointer; if (dp != null) { bOK = _var.ClassType.IsAssignableFrom(dp); } if (!bOK) { _valType.SetValue(_var.ClassType); dp = _var.ClassType; } if (isString) { DataTypePointer st = new DataTypePointer(new TypePointer(typeof(string))); if (!st.IsAssignableFrom(_val.DataType)) { _val.SetDataType(st); } } else { if (!_var.ClassType.IsAssignableFrom(_val.DataType)) { _val.SetDataType(dp); } } } }