/ / 'ऑब्जेक्ट' नामक डायनामिक एक्सेस प्रॉपर्टी - सी #

'ऑब्जेक्ट' नामक गतिशील पहुंच संपत्ति - सी #

गतिशील वस्तु की संपत्ति "ऑब्जेक्ट" कैसे सेट/प्राप्त करें?

dynamic json = new ExpandoObject();

json.foo = "bar"; // OK
json.object = "content"; // Does not compile
json["object"] = "content"; // throw RuntimeBinderException
((IDictionary<string, object>)json)["object"] = "content"; // OK, but ...

मैं एक आरईएसटी एपीआई तक पहुंचने की कोशिश कर रहा हूं, जिसके लिए मुझे "ऑब्जेक्ट" नामक एक संपत्ति सेट करने की आवश्यकता है। अंतिम समाधान वास्तव में समस्या को ठीक करता है, लेकिन मुझे लगता है कि मुझे कुछ याद आ रहा है।

उत्तर:

जवाब के लिए 2 № 1

object सी # कीवर्ड है।
परिभाषित करने के लिए object संपत्ति, आप संकलक को बता सकते हैं कि "ऑब्जेक्ट" उस मामले में एक संपत्ति का नाम है, न कि "@" का उपयोग करके कीवर्ड:

json.@object = "content";

यह सभी कीवर्ड के लिए काम करता है: json.@foreach, json.@if, json.@var आदि।

हालांकि, इसके उपयोग को कम करने की दृढ़ता से अनुशंसा की जाती है, क्योंकि इससे पठनीयता बिगड़ जाती है। अगर आप चाहते हैं object आपके आउटपुट JSON में संपत्ति, आप क्रमबद्धता और उपयोग के लिए एक वर्ग को परिभाषित कर सकते हैं JsonPropertyAttribute सीरिएलाइज़र को इसे क्रमबद्ध करने के लिए कहने के लिए object:

public class SomeClass
{
[JsonProperty("object")]
public string ObjectContent { get;set; }
}

जिसके परिणामस्वरूप होगा

{
"object": "content"
}