2012-12-12 11 views
6

मैं एक कस्टम लाइब्रेरी लिख रहा हूं जो आंतरिक रूप से ServiceStack.Text का उपयोग करता है। अन्य पुस्तकालय जो मेरा उपभोग करते हैं, सर्विसस्टैक का उपयोग भी कर सकते हैं। टेक्स्ट।क्या यह आपकी लाइब्रेरी में ServiceStack.Text.JsConfig सेटिंग्स को स्कॉप करना संभव है?

मैं कुछ JsConfig विकल्प (विशेष रूप से डेट हैंडलिंग) को बदलना चाहता हूं, लेकिन, किसी भी अच्छे नागरिक की तरह, मैं नहीं चाहता कि उन मूल्यों में मेरे संशोधनों को मेरे उपभोक्ता के दुष्प्रभाव का कारण बनना पड़े।

दुर्भाग्यवश JsConfig एक स्थिर वर्ग है, इसलिए इसकी सेटिंग्स स्थिर हैं, और उसी ऐपडोमेन में मेरा विश्वास है कि सर्विसस्टैक के अन्य उपभोक्ताओं को खून बह जाएगा। यह एक अवांछित व्यवहार है।

क्या मेरे कॉन्फ़िगरेशन परिवर्तनों को केवल JsonSerializer पर मेरी कॉल में बदलने का कोई तरीका है?

अद्यतन

मुझे पता है कि कोई है JsConfig.Reset विधि, फोन करने वाले यह पहले से ही अनुकूलित है दुर्भाग्य से, तो वह खो जाएगा।

मैं मूल्यों को बचा सकता हूं और उन्हें बहाल कर सकता हूं, लेकिन मुझे सीरिएलाइज़र तक पहुंच सिंक्रनाइज़ करना होगा, जो इस उद्देश्य को भी हरा देता है।

उम्मीद है कि कुछ आसान है जो मुझे याद आ रही है?

उत्तर

14

यह कार्यक्षमता ServiceStack में अनुपलब्ध थी। इसके बाद मैंने इसके लिए pull request जोड़ा।

using(var config = JsConfig.BeginScope()) 
{ 
    config.DateHandler = ... 
} 

और मूल्यों को अब सेट किए जाएंगे ब्लॉक का उपयोग क्षेत्र से बाहर चला जाता है, इसके ThreadStatic रूप में अच्छी तरह तो:

असल में अब अगर आप गुंजाइश के लिए अपने config सेटिंग्स आप निम्न सिंटैक्स का उपयोग कर सकते हैं चाहता था

अन्य धागे को प्रभावित नहीं करेगा।

1

एक संभावना है कि मैंने अपनी लाइब्रेरी में एक कस्टम प्रकार आंतरिक का उपयोग केवल रूट ऑब्जेक्ट को क्रमबद्ध करने के लिए किया है, और उसके बाद विशेष रूप से JsConfig मान निर्दिष्ट कर रहा है।

internal class MyInternalObject { } 

JsConfig<MyInternalObject>.DateHandler = ... 

मुझे यकीन है कि अगर जड़ कॉन्फ़िगरेशन मान क्रमबद्धता में बच्चे वस्तुओं के लिए नीचे का प्रचार है, लेकिन आसान परीक्षण करने के लिए पर्याप्त नहीं कर रहा हूँ।

+3

दुर्भाग्यवश 'डेटहैंडलर' इस प्रकार के सामान्य संस्करण पर नहीं है, इसलिए यह काम नहीं करेगा। –

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