0

我正在使用 DevExpress XAF 框架。

我有一个包含很多属性的类,可以对Persistent Alias属性进行一些数学运算。这是我的代码示例:

[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
    get
    {
        return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
    }
}

我尝试将属性设置为 = 1

return DebtEquity = 1;

但这所做的只是在保存时将属性重置为 1。

我尝试将 SQL Server 中每个属性的默认值设置为 1。但这也不起作用。

基本上,我有一个 Detailview 上面有一堆计算。当我想创建一个新的细节视图时,我得到一个 DivideByZeroException 因为当然一个新的细节视图/对象不会有任何值。有什么想法可以解决这个问题吗?

4

2 回答 2

3

如果你能得到 EquityTotal 的值,那么你可以先检查它是否为零,否则你可以捕获异常。

首先检查值的示例:

[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
    get
    {
        if (EquityTotal == 0) return 0;  // return 0 or whatever number you want when EquityTotal is equal to zero
        return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
    }
}

捕获异常的示例:

[PersistentAlias("ShortTermDebt + LongTermDebt / EquityTotal")]
public decimal DebtEquity
{
    get
    {
        try
        {
            return decimal.Parse(EvaluateAlias("DebtEquity").ToString());
        }
        catch (DivideByZeroException)
        {
            return 0;  // return 0 or whatever number you want when EquityTotal is equal to zero
        }
    }
}
于 2015-02-03T21:20:26.187 回答
0

作为使用纯标准语言语法的替代方案,您可以使用:

[PersistentAlias("Iif(EquityTotal > 0,ShortTermDebt+LongTermDebt/EquityTotal, 0)")]
public decimal DebtEquity
{
    get => Convert.ToDecimal(EvaluateAlias(nameof(DebtEquity)))
}
于 2021-01-23T01:27:49.040 回答