如何在我的泛型方法中添加参数?

时间:2012-10-21 19:16:31

标签: c#

我有以下方法:

    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”。

如何添加该参数。似乎没有地方可以添加它。

2 个答案:

答案 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);
}