3

MVC 4 WebGrid のコードを掘り下げていたところ、このように使用されていることがわかりました

    grid.Column("Id", format: (item) => item.GetSelectLink(item.Id)),

「item」パラメータが何かわからなかったので、ソース コードを調べたところ、「WebGridRow」クラスのようです。私の問題は、上記のコードが「.Id」プロパティを探しているが、クラスに存在しないことです。それに近い場所にある唯一のプロパティは、次のように見えます

public object this[string name]
        {
            get
            {
                if (String.IsNullOrEmpty(name))
                {
                    throw new ArgumentException(CommonResources.Argument_Cannot_Be_Null_Or_Empty, "name");
                }
                object value = null;
                if (!TryGetMember(name, out value))
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
                                                                      HelpersResources.WebGrid_ColumnNotFound, name));
                }
                return value;
            }
        }

「this[文字列名]」のように定義されたプロパティを見たことがありません。どういう意味ですか? 動的プロパティ?

Web で検索してみましたが、何を検索すればよいかわかりません。結果や説明が思いつきませんでした。

助けてください。ありがとう

4

4 に答える 4

3

これは厳密にはプロパティではなく、[] 演算子です。
このgetメソッドは、次のようなことを行うときに呼び出されます。

var a = Ob["hello"]

そしてset

ob["hello"] = 5
于 2013-07-26T06:35:08.517 に答える
3

それはインデクサーです、MSDNはあなたをカバーしています

于 2013-07-26T06:37:00.747 に答える