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);
 }
Beispiel #2
0
 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);
 }
Beispiel #3
0
 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);
 }