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
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))); }
}
}