मैं किसी ऑब्जेक्ट के गुणों को कैसे पढ़ सकता हूं जिसमें सी # में प्रतिबिंब का उपयोग करके सरणी प्रकार का तत्व शामिल है। अगर मेरे पास GetMyProperties नामक एक विधि है और मैं यह निर्धारित करता हूं कि ऑब्जेक्ट एक कस्टम प्रकार है तो मैं किसी सरणी के गुणों और मूल्यों को कैसे पढ़ सकता हूं। IsCustomType यह निर्धारित करने का तरीका है कि प्रकार कस्टम प्रकार है या नहीं।प्रतिबिंब का उपयोग किसी अन्य ऑब्जेक्ट की सरणी वाले किसी ऑब्जेक्ट के गुणों को पढ़ने के लिए
public void GetMyProperties(object obj)
{
foreach (PropertyInfo pinfo in obj.GetType().GetProperties())
{
if (!Helper.IsCustomType(pinfo.PropertyType))
{
string s = pinfo.GetValue(obj, null).ToString();
propArray.Add(s);
}
else
{
object o = pinfo.GetValue(obj, null);
GetMyProperties(o);
}
}
}
परिदृश्य है, मैं ArrayClass का एक उद्देश्य है और ArrayClass दो गुण है:
-string Id
-DeptArray[] depts
DeptArray 2 गुणों के साथ एक और वर्ग है:
-string code
-string value
तो, यह तरीकों हो जाता है ArrayClass का एक वस्तु। मैं सभी गुणों को शीर्ष-से-नीचे और स्टोर नाम/मूल्य जोड़ी को एक शब्दकोश/सूची आइटम में पढ़ना चाहता हूं। मैं मूल्य, कस्टम, enum प्रकार के लिए यह करने में सक्षम हूँ। मैं वस्तुओं की सरणी के साथ फंस गया। सुनिश्चित नहीं है कि यह कैसे करें।
हाय, मैं आपके कोड से नहीं देख रहा हूं जिसे आप प्राप्त करने की कोशिश कर रहे हैं। कोड संकलित नहीं होगा, क्योंकि pInfo.GetValue एक ऑब्जेक्ट देता है, स्ट्रिंग नहीं। – Adam
इसके बारे में क्षमा करें। मैंने PInfo.GetValue() में ToString() जोड़ने के लिए कोड संपादित किया है। मुझे यह विधि बनाना था। मूल रूप से विधि में कुछ जटिल तर्क हैं। सरल बनाने के लिए, मुझे सभी गुणों, संपत्ति की संपत्ति और उनके मूल्य को पढ़ने की आवश्यकता है। –