2014-04-21 16 views
7

Używam serializatora Json i muszę powiązać z nazwą właściwości o nazwie "zdarzenie" Oczywiście zdarzenie jest słowem kluczowym w języku C#, więc robienie czegoś takiego jak string event { get; set; } jest niedozwolone. Czy jest tak, aby to zrobić? Nie mogę zmienić nazwy obiektu, który do mnie wraca.C# Właściwość nazwany zdarzenie

Odpowiedz

11

Zakładając, że używasz Json.NET, można użyć JsonProperty attribute, lub @ symbol lub z ContractResolver (jest wbudowany w jednym, które sprawia, że ​​rzeczy CamelCase, więc nazwa własnością Event by do serializacji event).

[JsonProperty("event")] 
public string Event { get; set; } 


public string @event { get; set; } 


public string Event { get; set; } 

var s = JsonConvert.SerializeObject(myObj, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); 
+1

+1 dla 'JsonProperty', która unika potrzeby błądzenia z' @ 'ing everything. Oczywiście, zawsze będzie jedna biedna dusza, która będzie musiała pisać w VB, więc "Wydarzenie" jest również dla nich niedostępne i muszą napisać "[Wydarzenie]", aby obejść to, a zatem będą narzekać, że powinien zupełnie użyć innego słowa. – ClickRick

11

Zastosowanie @ używać keywords as identifiers

string @event { get; set; } 

Przedrostek „@” umożliwia stosowanie słów kluczowych jako identyfikatory, które jest przydatnych podczas łączenia z innymi językami programowania. [...] Identyfikator z prefiksem @ jest nazywany pełnym identyfikatorem. Używanie prefiksu @ do identyfikatorów, które nie są słowami kluczowymi jest dozwolone, ale jest zdecydowanie odradzane ze względu na styl.

+0

Dokładnie tego szukałem! – KJ3

Powiązane problemy