2009-09-03 12 views
6

मैं ईएसईएनटी डेटाबेस इंजन के शीर्ष पर आधारित सामान्य, लगातार .NET संग्रह लागू कर रहा हूं (ManagedEsent इंटरऑप परत का उपयोग करके)। अब तक मैं कक्षाओं पर ध्यान केंद्रित कर रहा हूं जो वास्तव में उनकी प्रणाली की नकल करते हैं। चयन। जेनरिक समकक्ष, सिवाय इसके कि वे कन्स्ट्रक्टर में एक पथ लेते हैं जो इंगित करता है कि डेटाबेस कहां जाना चाहिए। इस तरह कोड काम कर रहा है:लोग लगातार .NET शब्दकोश में क्या चाहते हैं?

using Microsoft.Isam.Esent.Collections.Generic; 

static void Main(string[] args) 
{ 
    var dictionary = new PersistentDictionary<string, string>("Names"); 
    Console.WriteLine("What is your first name?"); 
    string firstName = Console.ReadLine(); 
    if (dictionary.ContainsKey(firstName)) 
    { 
     Console.WriteLine("Welcome back {0} {1}", firstName, dictionary[firstName]); 
    } 
    else 
    { 
     Console.WriteLine("I don't know you, {0}. What is your last name?", firstName); 
     dictionary[firstName] = Console.ReadLine(); 
    } 
} 

मेरे प्रश्न हैं:

  • ढेर, कतार और शब्दकोश के साथ संगतता के अलावा क्या सुविधाओं लोग चाहते हैं/मौजूदा संग्रह में जरूरत?
  • क्या मुझे .NET Framework के संस्करण 2.0 या संस्करण 3.5 की आवश्यकता होनी चाहिए?
  • कुंजी और मान प्रकार दोनों बुनियादी .NET प्रकारों (बूल, बाइट, [सभी पूर्णांक], फ्लोट, डबल, ग्रिड, डेटटाइम और स्ट्रिंग तक सीमित हैं)। मैं उन मानों के लिए समर्थन जोड़ सकता हूं जो धारावाहिक संरचनाएं हैं। क्या इस प्रकार का प्रतिबंध बहुत दर्दनाक है?
  • लोग किस प्रकार के प्रदर्शन मानक देखना चाहते हैं?
  • लोग किस प्रकार के अनुप्रयोगों को PersistedDictionary का उपयोग करना चाहते हैं?

मैं तैयार अगले सप्ताह पहले रिलीज होगी, लेकिन मुझे यकीन है कि मैं सही काम कर रहा हूँ निर्माण करना चाहते हैं।

+0

वैसे, 'System.Decimal' भी कुछ अर्थों में एक बुनियादी प्रकार है (जहां तक ​​नहीं के रूप में CLR का संबंध है, लेकिन निश्चित रूप से के रूप में अब तक किसी भी C# या VB डेवलपर का संबंध है)। –

+0

क्या यह समुदाय विकी नहीं होना चाहिए? –

+1

['PersistentDictionary '] (http://izlooite.blogspot.com/2011/04/persistent-dictionary.html) –

उत्तर

4

मैंने कोडप्लेक्स पर PersistentDictionary प्रकाशित किया है। यह केवल धारावाहिक संरचनाओं का समर्थन करता है, लेकिन मैं एक अलग डेटा संरचना पर काम करूंगा जो मनमाने ढंग से वस्तुओं को संग्रहित और पुनर्प्राप्त करने का समर्थन करता है।

http://managedesent.codeplex.com/

3

टाइप प्रतिबंध कुंजी पर स्वीकार्य हो सकता है, लेकिन मूल्यों पर, मुझे काम करने के लिए [Serializable] की कुछ भी उम्मीद होगी। अन्यथा, बात क्या है? Dictionary<int, string> जैसे साधारण मामलों को वास्तविक दुनिया की तुलना में पाठ्यपुस्तकों में अक्सर देखा जाता है।

+2

समस्या यह है कि मैं सिस्टम शब्दकोश अर्थशास्त्र से मेल नहीं खा सकता हूं। यदि आप एक शब्दकोश में एक धारावाहिक वस्तु जोड़ते हैं तो इसे संदर्भ द्वारा जोड़ा जाता है, इसलिए ऑब्जेक्ट को बदलना वस्तु को शब्दकोश में बदल देता है (वे एक ही वस्तु हैं)। एक PersistentDictionary में जोड़ा गया कोई भी वस्तु मूल्य द्वारा जोड़ा जाएगा, क्लोन बनायेगा। मैं एपीआई अजीबता के बारे में चिंतित हूं जो इससे उत्पन्न होगा। –

+2

"मूल" प्रकारों के लिए, अर्थशास्त्र अभी भी मेल खाता है। उपयोगकर्ता द्वारा परिभाषित प्रकारों के लिए, यह अभी भी मूल्य प्रकारों और छद्म-मूल्य संदर्भ प्रकारों के लिए मेल खाएगा (यानी 'उरी' जैसी अपरिवर्तनीय कक्षाएं)। यहां तक ​​कि जहां यह मेल नहीं खाएगा, मैं तर्क दूंगा कि ऐसा व्यवहार अभी भी इसे पूरी तरह से मना करने से कहीं अधिक उपयोगी है। निश्चित रूप से भ्रम के लिए कुछ संभावनाएं हैं, इसलिए आपको इसके बारे में स्पष्ट रूप से चेतावनी देना होगा। लेकिन मुझे लगता है कि उपयोगिता सरलता को यहां लाती है। –

संबंधित मुद्दे