我有以下方法:
public static IEnumerable<SelectListItem> GetSpacedOptions<T>() where T : struct
{
var t = typeof(T);
if (!t.IsEnum)
{
throw new ArgumentException("Not an enum type");
}
var options = Enum.GetValues(t).Cast<T>()
.Select(x => new SelectListItem
{
Value = ((int) Enum.ToObject(t, x)).ToString(),
Text = Regex.Replace(x.ToString(), "([A-Z])", " $1").Trim()
});
return options;
}
我需要做的是添加一个名为zeroPad的布尔参数。因此,如果未提供该方法,则该方法将保持不变,但如果提供,则Text输出将始终为两位数字符串,例如“01”,“04”或“77”。
如何添加该参数。似乎没有地方可以添加它。
答案 0 :(得分:3)
如何将默认值设为false
.-
public static IEnumerable<TestClass> GetSpacedOptions<T>(bool zeroPad = false)
where T : struct
用户可以通过两种方式调用它 -
GetSpacedOptions<MyEnum>(true);
如果未指定值,默认情况下zeroPad
值将为false
GetSpacedOptions<MyEnum>();
答案 1 :(得分:1)
参数介于括号之间:
public static IEnumerable<SelectListItem> GetSpacedOptions<T>(bool zeroPad) where T : struct
{
...
}
使用无参数方法重载,该方法使用参数:
调用一个方法public static IEnumerable<SelectListItem> GetSpacedOptions<T>() where T : struct
{
return GetSpacedOptions<T>(false);
}