调整对象上指定类型的所有属性

时间:2019-08-02 06:37:22

标签: c# asp.net-mvc

在C#ASP.NET MVC Web应用程序上工作,该应用程序为每个用户存储指定的“十进制精度”,这会影响该应用程序显示某些字段的方式。对于显示给用户的值,以前的开发人员只会在返回之前使用类似这样的内容:

// Create output "DisplayObject" & assign values to its properties
// Fetch user's preferred "userAccuracy"
...
displayObject.val1 = Math.Round(displayObject.val1, userAccuracy);
displayObject.val2 = Math.Round(displayObject.val2, userAccuracy);
displayObject.val3 = Math.Round(displayObject.val3, userAccuracy);
...
return View(displayObject);

对于具有很多字段的对象,这看起来有些笨拙。想知道是否有一种简单的说法,“遍历一个对象并将类型decimal的任何字段四舍五入到userAccuracy小数位”或类似的含义。在this link中找到了一个展示如何通过反射实现此目标的资源,但我听说反射的使用应限于必要的地方,因为它可能会很慢。

编辑:为了清楚起见,“ displayObject”只是示例返回。对于不同的控制器方法,将有不同的返回类型,它们实际上没有任何公共属性。唯一的相似之处在于,对于某些返回的对象,我想要一种简单的方法将这些对象上的所有decimal属性四舍五入到指定的精度。我现在在想,要么要么继续使用以前的开发人员的策略,即仅舍入将要显示的每个十进制值,要么测量并评估仅使用反射的代价。

我想到的另一种选择是对要返回显示的每个对象都使用一个round_all方法-它将只是将现有代码块移到其他地方,但是如果我必须多次返回同一个对象(如果有用)(并清除MVC控制器一些或多或少无关的代码)。

0 个答案:

没有答案