1

私は次の方法を持っています:

    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 というブール値パラメーターを追加することです。したがって、指定されていない場合、メソッドは変更されませんが、指定されている場合、テキスト出力は常に「01」、「04」、または「77」などの 2 桁の文字列になります。

そのパラメータを追加するにはどうすればよいですか。追加する場所はないようです。

4

2 に答える 2

3

falseデフォルト値を.-として提供するのはどうですか

public static IEnumerable<TestClass> GetSpacedOptions<T>(bool zeroPad = false)
                                              where T : struct

ユーザーは両方の方法でそれを呼び出すことができます-

GetSpacedOptions<MyEnum>(true);

値が指定されていない場合、zeroPad値はfalseデフォルトになります

GetSpacedOptions<MyEnum>();
于 2012-10-21T19:22:27.913 に答える
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);
}
于 2012-10-21T19:19:40.767 に答える