Skip to main content
.NET 8.0+

XPBaseObject.EvaluateAlias(String) Method

Evaluates an expression specified by the PersistentAliasAttribute attribute for the specified property.

Namespace: DevExpress.Xpo

Assembly: DevExpress.Xpo.v24.2.dll

Declaration

public object EvaluateAlias(
    [CallerMemberName] string memberName = null
)

Optional Parameters

Name Type Default Description
memberName String null

A string that specifies the name of the property that is declared with the PersistentAliasAttribute attribute.

Returns

Type Description
Object

A value evaluated.

Remarks

The PersistentAliasAttribute attribute indicates that a property is not persistent and it’s value is calculated based upon the values of a specific persistent field(s). A parameter of this attribute can specify an expression and the result of this expression can represent the property’s value.

Use the EvaluateAlias method to evaluate an expression specified by the PersistentAliasAttribute attribute. For instance, it can be used in a property’s implementation as shown in the example below.

Example

The following code shows how to define a property as non-persistent and calculate its value based upon the values of specific persistent fields. The ExtendedPrice property is marked as a non-persistent, using the PersistentAliasAttribute attribute. The expression to evaluate the property’s value is specified as the attribute’s parameter. In addition, the property’s getter evaluates this expression using the XPBaseObject.EvaluateAlias method.

using DevExpress.Xpo;

public class Order : XPObject {
   public Order() {}
   public decimal UnitPrice {
       get { return fUnitPrice; }
       set { SetPropertyValue(nameof(UnitPrice), ref fUnitPrice, value); }
   }
   decimal fUnitPrice;

   public int Qty {
       get { return fQty; }
       set { SetPropertyValue(nameof(Qty), ref fQty, value); }
   }
   int fQty;

   public decimal Discount {
       get { return fDiscount; }
       set { SetPropertyValue(nameof(Discount), ref fDiscount, value); }
   }
   decimal fDiscount;


   [PersistentAlias("UnitPrice*Qty*(1-Discount)")]
   public decimal ExtendedPrice {
      get { return Convert.ToDecimal(EvaluateAlias(nameof(ExtendedPrice))); }
   }
}
See Also