मैं कन्वर्ट करने का तरीका ढूंढ रहा हूं List<Tag>
वस्तुओं के लिए Object
गुण।
उदाहरण के लिए, मैं प्रत्येक टैग को रूपांतरित करना चाहता हूं ताकि टैग का मान"s name
एक नया ऑब्जेक्ट गुण नाम और टैग का मान है"s value
वस्तु संपत्ति का मूल्य है।
जैसे
बदलना List
: [{"name":"KS_1","value":123},{"name":"KS_2","value":"ABC"}]
में Object
: {KS_1: 123, KS_2: "ABC"}
वस्तु के नाम और मान पूर्वनिर्धारित नहीं हैं।
मैं नेट 3.5 का उपयोग कर रहा हूं इसलिए मैं उपयोग नहीं कर सकता ExpandoObject
उत्तर:
उत्तर № 1 के लिए 1निम्न प्रकार से लिंक का उपयोग करके अज्ञात प्रकार का उपयोग करके समस्या को हल किया जा सकता है।
var Result = new Object()
{
KS_1: List[0].value,
KS_2: List[1].value
};
हालाँकि, यदि सूची सदस्यों की एक चर सूची की आवश्यकता है, तो प्रतिबिंब का उपयोग किया जाना चाहिए।
उत्तर № 2 के लिए 1
प्रतिबिंब का उपयोग करना एक विकल्प है। यहां एक विस्तार विधि है जो काम करती है:
public T FromTags<T>(this List<Tag> tags)
where T : new()
{
var t = new T();
var properties = typeof(T).GetProperties();
foreach (var tag in tags)
{
var property = properties.SingleOrDefault(p => p.Name == tag.name);
if (property != null)
{
property.SetValue(t, tag.value);
}
}
return t;
}
और आप इसे इस तरह कहेंगे:
public class MyThing
{
public string SomeProperty { get; set; }
public string AnotherProperty { get; set; }
}
var myThing = tags.FromTags<MyThing>();