public CodeExpression GetReferenceCode(IMethodCompile method) { if (Property != null) { CodeExpression ownerCode; MathNodePropertyField.CheckDeclareField(Property.IsStatic, Property.FieldMemberName, Property.PropertyType.TypeString, method.TypeDeclaration); if (Property.IsStatic) { ownerCode = new CodeTypeReferenceExpression(Property.Holder.TypeString); } else { ownerCode = new CodeThisReferenceExpression(); } return(new CodeFieldReferenceExpression(ownerCode, Property.FieldMemberName)); } return(null); }
public override CodeExpression GetReferenceCode(IMethodCompile method, CodeStatementCollection statements, bool forValue) { if (Property != null) { bool inside = false; SetterClass sc = method as SetterClass; if (sc != null) { inside = sc.Property.IsSameObjectRef(Property); } else { GetterClass gc = method as GetterClass; if (gc != null) { inside = gc.Property.IsSameObjectRef(Property); } } if (inside) { CodeExpression ownerCode; if (Property.IsStatic) { MathNodePropertyField.CheckDeclareField(Property.IsStatic, Property.FieldMemberName, Property.PropertyType, method.TypeDeclaration, Property.DefaultValue); ownerCode = new CodeTypeReferenceExpression(Property.Holder.TypeString); return(new CodeFieldReferenceExpression(ownerCode, Property.FieldMemberName)); } else { ownerCode = new CodeBaseReferenceExpression(); return(new CodeFieldReferenceExpression(ownerCode, Property.Name)); } } else { Property.SetHolder(Holder); return(Property.GetReferenceCode(method, statements, forValue)); } } return(null); }
public virtual CodeExpression GetReferenceCode(IMethodCompile method, CodeStatementCollection statements, bool forValue) { if (Property != null) { bool isWeb = false; if (this.RootPointer != null) { isWeb = this.RootPointer.IsWebObject; } else if (this.Property.RootPointer != null) { isWeb = this.Property.RootPointer.IsWebObject; } if (isWeb) { if (forValue && Property.RunAt == EnumWebRunAt.Client) { if (this.ObjectType.IsArray) { CodeMethodInvokeExpression cmie = new CodeMethodInvokeExpression( new CodeVariableReferenceExpression("clientRequest"), "GetStringArrayValue", new CodePrimitiveExpression(DataPassingCodeName)); return(cmie); } else { CodeMethodInvokeExpression cmie = new CodeMethodInvokeExpression( new CodeVariableReferenceExpression("clientRequest"), "GetStringValue", new CodePrimitiveExpression(DataPassingCodeName)); return(cmie); } } } bool inside = false; SetterClass sc = method as SetterClass; if (sc != null) { inside = sc.Property.IsSameObjectRef(Property); } else { GetterClass gc = method as GetterClass; if (gc != null) { inside = gc.Property.IsSameObjectRef(Property); } } if (inside) { CodeExpression ownerCode; MathNodePropertyField.CheckDeclareField(Property.IsStatic, Property.FieldMemberName, Property.PropertyType, method.TypeDeclaration, Property.DefaultValue); if (Property.IsStatic) { ownerCode = new CodeTypeReferenceExpression(Property.Holder.TypeString); } else { ownerCode = new CodeThisReferenceExpression(); } return(new CodeFieldReferenceExpression(ownerCode, Property.FieldMemberName)); } else { Property.SetHolder(_holder); return(Property.GetReferenceCode(method, statements, forValue)); } } return(null); }