0

Hereで、MVC の列挙型からドロップダウン リストを作成する方法に関するトピックを見つけました。そのトピックの答えは次のとおりです。

マーティン・ファートフト言います:

ルーンの答えを拡張メソッドにまとめました:

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拡張メソッドは、1 つ以上のパラメーターを持つクラスのメンバーです。最初のパラメーターは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 に答える