如何重构此属性';s代码?c#
我有一个视图模型,其属性表示年和月:如何重构此属性';s代码?c#,c#,asp.net,asp.net-mvc-3,refactoring,C#,Asp.net,Asp.net Mvc 3,Refactoring,我有一个视图模型,其属性表示年和月: public IEnumerable<SelectListItem> Years { get { return new SelectList( Enumerable.Range(1900, 112) .OrderByDescending(year => year) .Select(y
public IEnumerable<SelectListItem> Years
{
get
{
return new SelectList(
Enumerable.Range(1900, 112)
.OrderByDescending(year => year)
.Select(year => new SelectListItem
{
Value = year.ToString(CultureInfo.InvariantCulture),
Text = year.ToString(CultureInfo.InvariantCulture)
}
), "Value", "Text");
}
}
public IEnumerable<SelectListItem> Months
{
get
{
return new SelectList(
Enumerable.Range(1, 12)
.OrderByDescending(month => month)
.Select(month => new SelectListItem
{
Value = month.ToString(CultureInfo.InvariantCulture),
Text = month < 10 ? string.Format("0{0}", month) : month.ToString(CultureInfo.InvariantCulture)
}
), "Value", "Text");
}
}
public数年
{
得到
{
返回新的选择列表(
可枚举范围(1900、112)
.OrderByDescending(年=>year)
.选择(年份=>new SelectListItem
{
值=year.ToString(CultureInfo.InvariantCulture),
Text=year.ToString(CultureInfo.InvariantCulture)
}
)“价值”、“文本”);
}
}
公众假期数月
{
得到
{
返回新的选择列表(
可枚举范围(1,12)
.OrderByDescending(月=>month)
.选择(月份=>new SelectListItem
{
Value=month.ToString(CultureInfo.InvariantCulture),
Text=month<10?string.Format(“0{0}”,month):month.ToString(CultureInfo.InvariantCulture)
}
)“价值”、“文本”);
}
}
当然我在这里使用复制粘贴方法)我如何重构代码?通过某种方式将数字作为参数传递给某个助手方法 只是想大声说出来,但这里的常见部分是“获取一系列值,对它们进行排序,并将每个值包装在一个包装器对象中,文本值为(如何获取文本)”。也就是说,你可以做如下事情:
private IEnumerable<SelectListItem> GetXXXX(
int start,
int count,
Func<int,string> nameGetter)
{
return Enumerable
.Range(start, count)
.OrderByDescending (i => i)
.Select(i =>
new SelectListItem()
{
Value = i.ToString(CultureInfo.InvariantCulture),
Text = nameGetter(i)
});
}
private IEnumerable GetXXXX(
int start,
整数计数,
Func(名称获取者)
{
返回可枚举
.范围(开始、计数)
.OrderByDescending(i=>i)
.选择(i=>
新建SelectListItem()
{
Value=i.ToString(CultureInfo.InvariantCulture),
Text=nameGetter(i)
});
}
例如,您的“月份”是:
public IEnumerable<SelectListItem> Months
{
get
{
return GetXXXX(1, 12, m =>
m < 10
? string.Format("0{0}", m)
: m.ToString(CultureInfo.InvariantCulture));
}
}
公共IEnumerable月
{
得到
{
返回GetXXXX(1,12,m=>
m<10
?string.Format(“0{0}”,m)
:m.ToString(CultureInfo.InvariantCulture));
}
}
你的运气可能会更好