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);
                }
            }
        }
Esempio n. 2
0
 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);
             }
         }
     }
 }