【发布时间】:2010-04-25 16:37:24
【问题描述】:
我有一个看起来像这样的方法:
private double GetX()
{
if (Servings.Count > 0)
{
return Servings[0].X;
}
if (!string.IsNullOrEmpty(Description))
{
FoodDescriptionParser parser = new FoodDescriptionParser();
return parser.Parse(Description).X;
}
return 0;
}
我还有另一种方法,如下所示:
private double GetY()
{
if (Servings.Count > 0)
{
return Servings[0].Y;
}
if (!string.IsNullOrEmpty(Description))
{
FoodDescriptionParser parser = new FoodDescriptionParser();
return parser.Parse(Description).Y;
}
return 0;
}
有什么方法可以巩固这一点,因为唯一不同的是属性名称?
【问题讨论】:
-
您使用的是什么版本的 .NET?我可以在 .NET 4 中想到一些巧妙的方法。
-
如果你有很多这样的属性,你可以使用反射(PropertyDescriptor)。如果只有 2-3 个属性,它往往会很慢而且不值得。
-
@sblom - 3.5 是 dotnet 的版本
-
我认为 .NET 版本并不重要。不过,C# 版本很重要。例如,Darin Dimitrov 的答案取决于 lambda 表达式,该表达式自 C# 3.0 起就可用。在旧版本中,您可以使用匿名方法做类似的事情。
标签: c# .net .net-3.5 code-duplication