2016-04-07 13 views
0

So habe ich 2 Eigenschaften des Typs Zeichenfolge (Name und Wert) und möchten ihre Werte in eine Dictionary-Eigenschaft, so wie ein Schlüssel-Wert-Paar. Kann ich das nur im Getter der Wörterbucheigenschaft tun? Sie sind in der gleichen Klasse.Füllen Wörterbuch-Eigenschaft mit 2 String-Eigenschaften

public string TagName { get; set; } 

public string TagValue { get; set; } 

public Dictionary<string, string> TagNameAndValue {get; set;} 

Json Ausgang:

 { 
     "TagName": "processTime", 
     "TagValue": "0" 
     } 

Aber ich will es, dies sein:

 { 
     "processTime": "0",    
     } 

Ich weiß, das ein anderes Thema sein könnte, so sorry dafür.

+0

Sind Sie sicher, dass Sie eine 'Dictionary' brauchen? Sieht so aus, als müsstest du 'KeyValuePair '. –

+0

Mein "Lehrer" sagte, ich könnte ein Wörterbuch benutzen. Die ganze Sache wird mit dem JsonSerializer in Json konvertiert, wenn das irgendetwas ändert. Aber sage ich KeyValuePair, wie würde ich das füllen? – tweedledum11

+0

Betrachtet mit 'Newtonsoft.Json'? – gldraphael

Antwort

1

Sie können die Eigenschaften TagName und TagValue nicht verwenden, um das Wörterbuch bei der Deklaration zu initialisieren.

YourClassConstructor() 
{ 
    TagNameAndValue = new Dictionary<string, string>() { {TagName, TagValue } }; 
} 

Mit C# 6.0 Sie können Eigenschaften Standardwert zuweisen, aber Sie nicht die Klassenfelder/Eigenschaften in Immobilien Initialisierung verwenden:

Sie können Ihr Wörterbuch mit diesen Feldern in den Konstruktor wie initialisieren.

Wenn Sie einige konstante Stringwerte dann mit C# 6.0 haben würden Sie tun können:

public Dictionary<string, string> TagNameAndValue { get; set; } = 
        new Dictionary<string, string>() { { "1", "3" } }; 
+0

Ich sehe, das macht Sinn. Ich habe es im Konstruktor versucht, aber eine Exception bekommen, weil manchmal der TagValue Null ist, gibt es da einen Workaround? Machen Sie es NULL oder etwas? – tweedledum11

+0

Ok, vergiss es, die Überprüfung auf Null scheint genug zu sein. Die Ausgabe in JSON ist jetzt wie oben beschrieben, also immer noch nicht das, was ich wollte. – tweedledum11

0

Sie könnten bekommen, was Sie nach einer Bibliothek newtonsoft.json

Typ genannt mit dem folgenden

install-package newtonsoft.json 

Das Wörterbuch analysiert werden kann, die JsonConvert.SerializeObject() statisch erfüllt werden: in der Paket-Manager-Konsole das nuget Paket zu installieren Hod. JsonConvert befindet sich im Namespace Newtonsoft.Json.

Dictionary<string, string> dictionary = new Dictionary<string, string>(); 
dictionary.Add("processTime", "25"); 
Console.WriteLine(JsonConvert.SerializeObject(dictionary)); 

Sie sollten eine Ausgabe ähnlich bekommen:

enter image description here