2016-07-20 7 views
0

私はWPF C#チームプロジェクトを引き継ぎます。それは、インデクサプロパティクラスオブジェクトを設定し、私はこれに慣れていないメートルが、私はそれを取るC#インデクサープロパティを正しく使用する方法

[Dynamic] 
     public dynamic this[string key] { get; set; } 

:クラスの

一つは、この特性を有する抽象クラスを継承しますか?

このインデクサに変数を追加することによって、このようなオブジェクトをモックする必要があります。 どうすればいいですか? 私はこのような何か期待していた:

this.Add(myKey, myValue); 

をコンパイラは強く、私はこのインデクサーにアイテムを追加することが出来るのですか:)

オブジェクト?

THX

+0

どのリストに値を追加したいですか?あなたはそのクラスの中にプライベートリストを持っていますか? – user3185569

+0

hm、私は分かりませんが、私は気になるのは、関連するクラスが(私はアクセス権がない)外部DLLにあることを認識しています。 しかし、モックの目的のために、私はこのクラスを派生させてインデクサアクセサをオーバーライドできると思いますか? –

+0

したがって、デフォルトの '{get;セット; } 'これは動作しません。これらのメソッドを実装し、渡された値をコレクションに追加する必要があります。コレクションを失うことになります。 – user3185569

答えて

4

クラスのインデクサは、彼らはあなたがしたいクラスを実装するにはあなたが望むものは何でもパラメータだけではなく、整数

var existingValue = this["someKey"]; 
this["someKey"] = newValue; 

をキー配列のいくつかの種類であるかのようインスタンスが見えるのですこのようなもの

public class Mine : ThatAbstractClass 
{ 
    Dictionary<string, dynamic> IndexerValues = new Dictionary<string, dynamic>(); 

    public override dynamic this[string key] 
    { 
    get { return IndexerValues[key]; } 
    set { IndexerValues[key] = value; } 
    } 
} 
+1

それはまさに私が話していることです。あなたの答えを延長してくれてありがとう:) – user3185569

+0

thx 2: –

+0

それは大丈夫です。私は実際にあなたのコメントを見た前にそれを拡張しました(今すぐ):) –

関連する問題