Tuesday, 15 July 2014

c# - DataTables and custom types -


मैंने CustomData नामक एक वर्ग बनाया जो कि CustomOptions अपने खेतों में से एक के रूप में मैं मान के रूप में DataTable में CustomData का उपयोग करना चाहता हूं I यहां एक संक्षिप्त अवलोकन ( सरलीकृत, फ़ील्ड हैं निजी और एक्सेसर्स सार्वजनिक , अधिकतर पठनीय और सेट कस्टम विधियों द्वारा किया जाता है );

  enum CustomDataOptionType {// कुछ मान, महत्वपूर्ण नहीं} वर्ग कस्टम विकल्प {सार्वजनिक CustomDataOptionType प्रकार {get; } सार्वजनिक शब्दकोश & lt; स्ट्रिंग, स्ट्रिंग & gt; मान {प्राप्त करें; } // मूल्यों को सेट करने के लिए कुछ तरीके} वर्ग कस्टमडेटा {सार्वजनिक कस्टम विकल्प विकल्प {get; } // विकल्प सेट करने के लिए कुछ तरीके}  

इसलिए, "वास्तविक" वर्ग में जो ऊपर का उपयोग करता है, मैं कॉलम का उपयोग करके एक DataTable बना देता हूं टाइपफ (कस्टमडेटा) हैं।

लेकिन जब मैं कॉलम तक पहुंचने की कोशिश करता हूं, उदा। द्वारा

<प्री> डेटारॉ पंक्ति = डेटा। रोसे। खोजें ("bla"); पंक्ति [ "colmn1"] विकल्प। // संभव नहीं

क्यों मैं options -field?

क्योंकि पंक्ति [" column1 "] देता है " ऑब्जेक्ट " आपको अपने प्रकार के लिए मूल्य डालने की आवश्यकता है:

  ((CustomData) पंक्ति ["column1"])। विकल्प  यदि आप  शून्य  मान को संभालते हैं, तो आपको इसका उपयोग करना चाहिए:  
  CustomData डेटा = पंक्ति ["स्तंभ 1"] कस्टमडेटा के रूप में; अगर (शून्य! = डेटा) {// आप क्या करना चाहते हैं}  

या आप इसे सरल बनाने के लिए एक्सटेंशन विधियों का उपयोग कर सकते हैं:

  सार्वजनिक स्थिर डेटारवएटेंशन {सार्वजनिक स्थैतिक शून्य ForNotNull & lt; T & gt; (यह DataRow पंक्ति, स्ट्रिंग कॉलम नाम, एक्शन & lt; T & gt; कार्रवाई) {ऑब्जेक्ट rowValue = row [columnName]; यदि (पंक्तिव्यू टी है) {कार्रवाई ((टी) पंक्तिवैल्यू); }}} // कहीं और पंक्ति। ForNotNull & lt; कस्टमडेटा & gt; ("कॉलम 1", कटॉमडेटा = & gt; यह.टेक्स्टबॉक्स 1। टेक्स्ट = कस्टमडेटा। उपयोगकर्ता नाम);  

No comments:

Post a Comment