我在具有自定义Getter且没有Setter的模型中有一个属性。现在,我需要将值设置为Percent属性。问题是,与此属性相关联的逻辑很多,我想避免更改除此属性之外的其他代码。
我想直接将值设置为Percent属性,而不是某些私有字段。基本上,与默认的getter和setter相同。可以使用自定义设置器来实现它吗?
我想做这样的事情:
public decimal Percent
{
get { return Count / Total }
set { this.Percent = value }
}
编辑:更多背景信息。在模型中,我有几个表示数值运算的属性,例如Count,Sum,Total,Deviation等。大多数属性是在SQL查询中计算并直接填充的。所有属性都有默认的getter和setter。不会从db加载仅Percent属性,因为它基于先前填充的Count和Total属性计算其值。
该模型用于List(List ..)中,并且某些项目的Percent属性与默认Count / Total的其他项目的计算方式不同,这就是为什么我需要对该属性实施set选项的原因。所以我想将其值设置为
private void CalculatePercents(List<StatisticOperations> Stats)
{
// I have a way to get exactly the index I need and the calculation of
// the percent value (30), it just isn't necessary here, so for
// illustration:
Stats[15].Percent = 30;
}
类型没关系,假设它们都是十进制。
答案 0 :(得分:1)
如果您需要带有setter的派生/计算属性,则可以应用getter的相反方法:
public decimal Percent
{
get => (decimal)Count / Total;
set => Count = (int)(Total * value);
}
假设Count
和Total
均为int