0

次のように入力された汎用オブジェクトがあります。

object cAdditional;

cAdditional = defaultCols.ContainsKey(colType + "adtlParams") && defaultCols[colType + "adtlParams"] != ""
              ? serializer.Deserialize<object>(defaultCols[colType + "adtlParams"])
              : null;

どの要素が返されるか (もしあれば) はわかりませんが、デバッガーで次のように結果を確認できます。

ここに画像の説明を入力

この cAdditional[0] のようなオブジェクトにアクセスしようとすると、エラーが発生します。Cannot apply indexing with [] to an expression of type 'object'

キー(summaryTypeこの例では)を期待するクラスがあるので、次のようなことをしたいと思います:

var colMod = new ColModel
                 {
                    summaryType = cAdditional["summaryType"]
                    summaryTpl = cAdditional["summaryTpl"]
                 };

キー/値のいずれかを指定するどころか、アクセスすることすらできません。

summaryTypeまた、 0 要素になる保証はないので、Key で Value を取得する必要があります。

これどうやって付けるの?

4

1 に答える 1

2

デバッガーで結果を確認できます

これは、デバッガーがcAdditional 実際に実行時に型を調べており、そのプロパティ/メソッドを表示できるためです。cAdditionalコンパイラはコンパイル時にしか認識しobjectないため、文字列インデクサーにバインドできません。

インデクサーにバインドするか、実行時に文字列インデクサーにバインドするためにcAdditional使用するはずの型にキャストする必要があります。dynamic

いずれの方法も、実行時エラーの影響を受けやすくなります。

于 2013-11-12T23:19:55.523 に答える