मैं एक पुस्तकालय या स्रोत कोड की तलाश में हूं जो शून्य विधियों की जांच के लिए गार्ड विधियों प्रदान करता है। स्पष्ट रूप से यह निर्माण करना आसान है, लेकिन मैं सोच रहा हूं कि .NET के लिए पहले से कोई बाहर है या नहीं। एक मूल Google खोज ने बहुत कुछ नहीं बताया।.NET गार्ड क्लास लाइब्रेरी?
उत्तर
है CuttingEdge.Conditions। पेज से प्रयोग उदाहरण:
public ICollection GetData(Nullable<int> id, string xml, ICollection col)
{
// Check all preconditions:
id.Requires("id")
.IsNotNull() // throws ArgumentNullException on failure
.IsInRange(1, 999) // ArgumentOutOfRangeException on failure
.IsNotEqualTo(128); // throws ArgumentException on failure
xml.Requires("xml")
.StartsWith("<data>") // throws ArgumentException on failure
.EndsWith("</data>"); // throws ArgumentException on failure
col.Requires("col")
.IsNotNull() // throws ArgumentNullException on failure
.IsEmpty(); // throws ArgumentException on failure
// Do some work
// Example: Call a method that should not return null
object result = BuildResults(xml, col);
// Check all postconditions:
result.Ensures("result")
.IsOfType(typeof(ICollection)); // throws PostconditionException on failure
return (ICollection)result;
}
एक और अच्छा दृष्टिकोण है, जो एक पुस्तकालय में पैक नहीं है, लेकिन आसानी से हो सकता है, on Paint.Net blog:
public static void Copy<T>(T[] dst, long dstOffset, T[] src, long srcOffset, long length)
{
Validate.Begin()
.IsNotNull(dst, "dst")
.IsNotNull(src, "src")
.Check()
.IsPositive(length)
.IsIndexInRange(dst, dstOffset, "dstOffset")
.IsIndexInRange(dst, dstOffset + length, "dstOffset + length")
.IsIndexInRange(src, srcOffset, "srcOffset")
.IsIndexInRange(src, srcOffset + length, "srcOffset + length")
.Check();
for (int di = dstOffset; di < dstOffset + length; ++di)
dst[di] = src[di - dstOffset + srcOffset];
}
मैं my project में इसका इस्तेमाल करते हैं और आप उधार ले सकता वहां से कोड।
माइक्रोसॉफ्ट के Code Contracts को .NET 4.0 के साथ बाहर आने के कारण मैं एक ऐसा खोजने की कोशिश करता हूं जो अधिकतर संगत है, यदि संभव हो तो - और यदि नहीं, तो इसे स्वयं लिखें। इस तरह जब आप .NET 4.0 (अंततः) में अपग्रेड करते हैं तो माइग्रेशन आसान हो जाएगा।
कई विधियां हैं जिनका आप उपयोग कर सकते हैं।
मेरा पसंदीदा आस्पेक्ट ओरिएंटेड प्रोग्रामिंग का उपयोग कर रहा है। PostSharp देखें।
तुम भी युक्ति # पर एक नज़र ले जा सकते हैं, सी #
के लिए एक विस्तार 4.0 में, आप एक पूर्ण विशेषताओं अनुबंध पुस्तकालय होगा। http://blueonionsoftware.com/blog.aspx?p=ca49cb62-7ea2-43c5-96aa-91d11774fb48
मैं किसी भी है कि व्यावसायिक रूप से उपलब्ध हैं के बारे में पता नहीं है:
अंत में, मेरा एक सहयोगी एक बहुत उपयोगी गार्ड पुस्तकालय के साथ आ गया। पैटर्न & प्रथाओं एंटरप्राइज़ लाइब्रेरी में इस प्रकार के कोड के लिए कुछ समर्थन है। कोडप्लेक्स परपर भी कई खुली स्रोत परियोजनाएं हैं जो इसे (अलग-अलग डिग्री) करने के लिए दिखाई देती हैं।
अधिकांश समय, इस प्रकार के पुस्तकालयों को कस्टम लिखा जा रहा है और कंपनी का उपयोग करने वाले आंतरिक में रहना है।
Code Contracts का उपयोग करके ऐसा करने के लिए तंत्र प्रदान करने के लिए .NET 4.0 में समर्थन आ रहा है, जो SpeC# पर आधारित हैं।
मैं हाल ही में गार्ड कक्षाओं के बारे में एक पोस्ट में लिखा था (जो जानकारी या तो नहीं मिला था): http://ajdotnet.wordpress.com/2009/08/01/posting-guards-guard-classes-explained/
मैं भी एक संबंधित गार्ड वर्ग कार्यान्वयन (उसी रूप में इस कोड का उपयोग करने के लिए स्वतंत्र लग रहा है, या करने के लिए इसे समायोजित करने के लिए प्रकाशित अपने जरूरतों): ajdotnet.wordpress.com/guard-class/
.NET 4.0 (स्पेक # के उत्तराधिकारी) में गार्ड क्लास और कोड अनुबंध के बीच संबंधों के संबंध में, निम्न पोस्ट पर एक नज़र डालें: www.leading -edge-dev.de/?p=438
(खंडित लिंक के लिए खेद है, साइट केवल एक को अनुमति है लिंक ...)
HIH, AJ.NET
netfx-guard nuget पैकेज स्थापित करें।आपको कोड स्निपेट को कमजोर और अस्वीकार भी मिलता है, और यह आपके मैनुअल चेक
- 1. पोर्टेबल क्लास लाइब्रेरी और .NET ConcurrentDictionary
- 2. .NET क्लास लाइब्रेरी में HTML एन्कोडिंग
- 3. .NET पोर्टेबल क्लास लाइब्रेरी और यूडीपी समर्थन
- 4. पोर्टेबल क्लास लाइब्रेरी
- 5. क्लास लाइब्रेरी
- 6. क्लास लाइब्रेरी
- 7. क्लास लाइब्रेरी
- 8. क्लास लाइब्रेरी
- 9. vim + C++: गार्ड गार्ड
- 10. यूरी मैनिपुलेशन क्लास .net
- 11. .NET लाइब्रेरी
- 12. ASP.NET UserControl क्लास लाइब्रेरी
- 13. क्लास लाइब्रेरी सदस्य यूज़र
- 14. क्लास लाइब्रेरी से HtmlEncode
- 15. पोर्टेबल क्लास लाइब्रेरी
- 16. क्लास इंटरफेस को .NET क्लास लाइब्रेरी में कहां रखा जाना चाहिए?
- 17. .NET क्लास डिज़ाइन प्रश्न
- 18. एक्सकोड - स्क्रिबल, गार्ड किनारों और गार्ड मैलोक
- 19. जावा क्लास स्कोप और लाइब्रेरी
- 20. .NET लाइब्रेरी कक्षाओं
- 21. .NET YAML लाइब्रेरी
- 22. .NET ज्यामिति लाइब्रेरी
- 23. .NET फ़ाइल सिंक लाइब्रेरी
- 24. एरलांग गार्ड
- 25. फ़ंक्शन गार्ड
- 26. गार्ड desugaring
- 27. गार्ड मैलोक
- 28. 'ज़ेंड गार्ड'
- 29. समस्या गार्ड
- 30. .NET डिस्पैचर क्लास गायब (System.Windows.Threading)
जितना तेज़ करता है, मैं इसे स्वीकृत उत्तर के रूप में चिह्नित कर रहा हूं क्योंकि यह निश्चित रूप से मेरी आवश्यकताओं के अनुरूप है। –