2016-07-20 20 views
0

Ich übernehme ein WPF C# -Teamprojekt.Wie Sie eine C# -Indexereigenschaft ordnungsgemäß verwenden

Einer der Klasse erbt von einer abstrakten Klasse, die diese Eigenschaft:

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

Ich bin nicht vertraut mit diesem, aber ich nehme es es eine Indexer Eigenschaft legt die Klassenobjekte?

Ich muss ein solches Objekt vortäuschen, indem ich eine Variable zu diesem Indexer hinzufüge. Wie soll ich tun? Ich war so etwas wie dies erwartet:

this.Add(myKey, myValue); 

aber der Compiler-Objekte stark :)

Wie ich Artikel in dieser Indexer hinzuzufügen bin soll ??

thx

+0

Zu welcher Liste möchten Sie den Wert genau hinzufügen? Haben Sie eine private Liste in dieser Klasse? – user3185569

+0

hm, ich weiß nicht, ich merke nur, dass die betroffene Klasse in eine externe DLL ist (auf die ich keinen Zugriff habe). Allerdings, für Scheinzwecke, nehme ich an, dass ich diese Klasse ableiten und die Indexer-Zugriffsmethoden überschreiben kann? –

+0

Sie können also keinen Standard haben '{get; einstellen; } 'das funktioniert nicht. Sie müssen diese Methoden implementieren und den übergebenen Wert einer Sammlung hinzufügen, sonst verlieren Sie sie. – user3185569

Antwort

4

Ein Indexer auf einer Klasseninstanz, obwohl sie eine Art von Array durch, was auch immer die Parameter eingegeben sind aussehen wie machen Sie wollen nicht nur ganze Zahlen

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

Um die Klasse zu implementieren Sie tun würden etwas wie das

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

Das ist genau das, worüber ich spreche. Danke für die Erweiterung Ihrer Antwort :) – user3185569

+0

thx die 2 von Ihnen :) –

+0

Das ist in Ordnung. Ich habe es tatsächlich verlängert, bevor ich deinen Kommentar gesehen habe (gerade jetzt) ​​:) –

Verwandte Themen