2010-08-03 9 views
9

जबकि Shrinkr के स्रोत कोड देख (हम सभी की समीक्षा अन्य परियोजना के स्रोत कोड जानने के लिए, है ना ??? :)) मैं (नीचे मेरे द्वारा संक्षिप्त) निम्नलिखित kewl कोड .. देखाकोई भी .NET Fluent Argument वहाँ पुस्तकालयों की जांच कर रहा है?

public virtual Foo Foo 
{ 
    get; 
    set 
    { 
     Check.Argument.IsNotNull(value, "value"); 
     // then do something. 
    } 
} 

धाराप्रवाह पर ध्यान दें कि वे तर्कों की जांच करते हैं? अच्छा :)

alt text http://cherrythian.com/images/borat.jpg

तो .. जाँच कोड, वे है कि यह करता है कुछ कस्टम वर्ग ...

public static class Check 
{ 
    public static class Argument 
    { 
     public static void IsNotNull(object parameter, 
            string parameterName) 
     { ... } 

     public static void IsNotNullOrEmpty(string parameter, 
              string parameterName) 
     { ... } 

.... etc .... 
} 

वहाँ किसी भी आम चौखटे वहाँ बाहर हैं?

मणि netFluentCheck स्थापित करें?

:)

उत्तर

6

मैं CuttingEdge Conditions, Codeplex पर पाया का उपयोग कर समाप्त हो गया प्रयास करें इस के अपने स्वयं के कार्यान्वयन ... दिखा रहा है।

उदाहरण के लिए।

// Check all preconditions: 
Condition.Requires(id, "id") 
    .IsNotNull()   // throws ArgumentNullException on failure 
    .IsInRange(1, 999) // ArgumentOutOfRangeException on failure 
    .IsNotEqualTo(128); // throws ArgumentException on failure 

अच्छा :)

+3

CuttingEdge.Conditions shizzle है ;-) – Steven

1

Here's one भाव का उपयोग करता है। चूंकि यह बहुत तुच्छ है, हर कोई

+0

आपका लिंक मर चुका है। –

+4

@ एम। बाककॉक archive.org आज़माएं। मेरा जवाब 4 साल से अधिक पुराना है। आप गंभीरता से मुझे 2008 से अपने सभी 1600+ उत्तरों को बनाए रखने की गंभीरता से उम्मीद नहीं कर सकते हैं। –

1
+0

फ़्लुएंट वैलिडेशन ऑब्जेक्ट्स के सत्यापन के लिए किया गया है और तर्क सत्यापन के लिए नहीं – BoeseB

+2

मैं एएसपी.नेट एमवीसी एक्शन तर्कों के सत्यापन के लिए फ़्लुएंट वैलिडेशन का उपयोग करता हूं, जो ऑब्जेक्ट्स हैं मॉडल दृढ़ता से टाइप किया गया है। कई विकल्प होंगे।यह उपलब्ध उपकरणों में से एक है इसलिए मैंने सोचा कि अगर मैं किसी की मदद करता हूं तो मैं इसे बाहर रखूंगा। –

1

यहाँ एक सरल वर्ग केवल कुछ लाइनें लंबी (यहां से: http://code.google.com/p/hotwire-queue/wiki/QuickAssert) है कि मैंने कुछ समय पहले लिखा था कि धाराप्रवाह सत्यापन करने के लिए कुछ ऐसा ही, एक अलग शैली का उपयोग करता है मैं पढ़ने के लिए थोड़ा आसान लगता है (ymmv)। किसी तीसरे पक्ष के पुस्तकालयों की आवश्यकता नहीं है, और यदि सत्यापन विफल रहता है, तो आपको असफल कोड के साथ एक सरल त्रुटि संदेश मिलता है।

config.Active.Should().BeTrue(); 
config.RootServiceName.Should().Be("test-animals"); 
config.MethodValidation.Should().Be(MethodValidation.afterUriValidation); 
var endpoints = config.Endpoints; 
endpoints.Should().NotBeNull().And.HaveCount(2); 
इस के लिए

:

config.Ensure(c => c.Active, 
       c => c.RootServiceName == "test-animals", 
       c => c.MethodValidation == MethodValidation.afterUriValidation, 
       c => c.Endpoints != null && c.Endpoints.Count() == 2); 

यहाँ वर्ग है, आशा है कि यह किसी ;-D

using System; 
using System.Linq.Expressions; 
using NUnit.Framework; 

namespace Icodeon.Hotwire.Tests.Framework 
{ 
    public static class QuickAssert 
    { 
     public static void Ensure<TSource>(this TSource source, params Expression<Func<TSource, bool>>[] actions) 
     { 
      foreach (var expression in actions) 
      { 
       Ensure(source,expression); 
      } 
     } 

     public static void Ensure<TSource>(this TSource source, Expression<Func<TSource, bool>> action) 
     { 
      var propertyCaller = action.Compile(); 
      bool result = propertyCaller(source); 
      if (result) return; 
      Assert.Fail("Property check failed -> " + action.ToString()); 
     } 
    } 
} 

लिए एक प्रारंभिक बिंदु बार मैं सुनिश्चित लिखा था पर के रूप में उपयोगी है, कोड ठेके थे विजुअल स्टूडियो 2010 में समर्थित नहीं है, लेकिन अब http://msdn.microsoft.com/en-us/magazine/hh148151.aspx

1

आप Bytes2you.Validation को आजमा सकते हैं (Project)। यह तर्क, सत्यापन के लिए धाराप्रवाह एपीआई प्रदान करने वाला तेज़, एक्स्टेंसिबल, सहज और उपयोग में आसान सी # लाइब्रेरी है। आपके .NET एप्लिकेशन में रक्षात्मक प्रोग्रामिंग को लागू करने के लिए आवश्यक सब कुछ देता है।