protected VariableDef parseConstVar(NodeTag.DefaultObject node, object parentObject, string str) { Debug.Check(str.StartsWith("const")); //const Int32 1 object propertyMemberDepended = null; Type objType = node.GetType(); if (this.DependedProperty != "") { System.Reflection.PropertyInfo pi = objType.GetProperty(this.DependedProperty); if (pi != null) { propertyMemberDepended = pi.GetValue(node, null); } else if (pi == null && parentObject != null) { Type parentType = parentObject.GetType(); pi = parentType.GetProperty(this.DependedProperty); propertyMemberDepended = pi.GetValue(parentObject, null); } } Type valueType = null; VariableDef variableDepended = propertyMemberDepended as VariableDef; if (variableDepended != null) { valueType = variableDepended.GetValueType(); } else if (propertyMemberDepended != null) { MethodDef methodDepended = propertyMemberDepended as MethodDef; if (methodDepended != null) { valueType = methodDepended.ReturnType; } else { RightValueDef varRV = propertyMemberDepended as RightValueDef; if (varRV != null) { valueType = varRV.ValueType; } } } else { string[] tokens = str.Split(' '); Debug.Check(tokens.Length == 3); valueType = Plugin.GetTypeFromName(tokens[1]); } if (valueType != null) { VariableDef variable = new VariableDef(null); string[] tokens = str.Split(' '); Debug.Check(tokens.Length == 3); Plugin.InvokeTypeParser(valueType, tokens[2], (object value) => variable.Value = value, node); return(variable); } return(null); }