/ / C# कन्वर्ट लिस्ट<T> टू ऑब्जेक्ट प्रॉपर्टीज - ​​c#, लिस्ट, ऑब्जेक्ट, कन्वर्टर

सी # कन्वर्ट सूची <टी> ऑब्जेक्ट प्रॉपर्टीज - ​​सी #, सूची, ऑब्जेक्ट, कनवर्टर

मैं कन्वर्ट करने का तरीका ढूंढ रहा हूं 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>();