0

我在这里找到了一个主题,该主题是关于如何从 MVC 中的枚举创建下拉列表。这是该主题的答案:

马丁法尔托夫特说:

我将 Rune 的答案转换为扩展方法:

public static SelectList ToSelectList<TEnum>(this TEnum enumObj)
{
  var values = from TEnum e in Enum.GetValues(typeof(TEnum))
               select new { Id = e, Name = e.ToString() };

  return new SelectList(values, "Id", "Name", enumObj);
}

我确实需要这样做,但它使用扩展方法,我不知道它是什么以及如何实现它。那么任何人都可以帮助我让这段代码正常工作吗?我需要知道什么是扩展方法以及如何实现它们。

谢谢

4

1 回答 1

1

扩展方法是static具有一个或多个参数的类的成员,其中第一个参数必须使用this关键字作为代码示例中的属性。

从那时起,您可以在给定类型的任何实例上使用扩展方法,只要将包含该类的命名空间作为using语句添加即可。

包含扩展方法的类的示例:

public static class ExtensionMethods
{
    public static string Reverse(this string source)
    {
        string result = String.Empty;
        for (int i = 0; i < source.Length; i++)
            result = source.Substring(i, 1) + result;

        return result;
    }
}

使用这种扩展方法,如

string toBeReversed = "Hello World";
string reversed = toBeReversed.Reverse();

重点是向现有类型添加功能,而无需实际继承它。使用扩展方法,您可以将新功能“附加”到任何给定类型,而无需实际更改它。

于 2012-08-23T09:59:06.043 回答