आप ऑब्जेक्ट का निरीक्षण करने के लिए प्रतिबिंब का उपयोग कर सकते हैं और प्रतिलिपि बना सकते हैं जो प्रत्येक संपत्ति मूल्य को आवश्यकतानुसार बदलता है। संयोग से मैंने अभी सार्वजनिक रूप से एक नई पुस्तकालय बनाई है जो इस तरह की चीज को वास्तव में आसान बनाता है। आप इसे यहाँ प्राप्त कर सकते हैं: https://github.com/jamietre/IQObjectMapper
यहाँ कोड का एक उदाहरण आप
var newInstance = ObjectMapper.Map(obj,(value,del) => {
return value !=null && value.GetType().IsClass ?
null :
value;
});
का प्रयोग करेंगे वस्तु के प्रत्येक संपत्ति के माध्यम से "मानचित्र" विधि दोहराता है, और IDelegateInfo होने प्रतिबिंब प्रत्येक के लिए एक Func<object,IDelegateInfo>
कॉल (संपत्ति का नाम, प्रकार, आदि जैसी जानकारी)। फ़ंक्शन प्रत्येक प्रॉपर्टी के लिए नया मान देता है। तो इस उदाहरण में, मैं सिर्फ यह देखने के लिए प्रत्येक संपत्ति के मूल्य का परीक्षण करता हूं कि यह कक्षा है या नहीं, और यदि ऐसा है, तो शून्य वापस करें; यदि नहीं, तो मूल मान वापस करें।
एक और अधिक अर्थपूर्ण तरीका यह करने के लिए:
var obj = new MyObject();
// map the object to a new dictionary
var dict = ObjectMapper.ToDictionary(obj);
// iterate through each item in the dictionary, a key/value pair
// representing each property
foreach (KeyValuePair<string,object> kvp in dict) {
if (kvp.Value!=null && kvp.Value.GetType().IsClass) {
dict[kvp.Key]=null;
}
}
// map back to an instance
var newObject = ObjectMapper.ToNew<MyObject>(dict);
या तो मामले में, newInstance.myChildren
का मूल्य (और किसी भी अन्य गुण है कि गैर मूल्य टाइप कर रहे हैं) अशक्त हो जाएगा। आप इस मैपिंग में क्या होता है इसके लिए नियम आसानी से बदल सकते हैं।
उम्मीद है कि इससे मदद मिलती है। बीटीडब्ल्यू - आपकी टिप्पणी से ऐसा लगता है कि जेएसओएन वास्तव में आपका लक्ष्य नहीं है, लेकिन केवल कुछ ऐसा जो आपको लगता है वह आपको प्राप्त करने में मदद करेगा। यदि आप जेसन के साथ समाप्त करना चाहते हैं, तो बस इसके आउटपुट को क्रमबद्ध करें, उदा।
string json = JavaScriptSerializer.Serialize(newObject);
लेकिन मैं json शामिल नहीं होगा अगर वह यह है कि एक को समाप्त करने के लिए सिर्फ एक साधन था, यदि आप सीएलआर वस्तुओं में रहना चाहते हैं तो जेएसओएन को मध्यस्थ के रूप में उपयोग करने की कोई वास्तविक आवश्यकता नहीं है।
में इस का उपयोग कर सकते हैं समस्या JSON के कुछ उदाहरण दिखा सकते हैं? – igofed
क्या आप किसी भी बच्चे के बिना बस एक नई वस्तु बना सकते हैं और उसे क्रमबद्ध कर सकते हैं? –
तार्किक रूप से यह समझ में आता है, लेकिन मैं अपने बच्चों के ऑब्जेक्ट के प्रकार की किसी वस्तु को पट्टी करना चाहता हूं। मुझे लगा कि जेसन सीरियलाइजेशन ऐसा करने का सबसे अच्छा तरीका होगा, लेकिन मैं सुझावों के लिए निश्चित रूप से खुला हूं। –