2010-08-03 2 views
9

während Shrinkr ‚s Quellcode suchen (wir alle Quellcode Überprüfung andere Projekt zu erfahren, nicht wahr ??? :)) Ich habe folgende kewl Code bemerkt .. (von mir abgekürzt, unten)Irgendein .NET fließendes Argument, das Bibliotheken draußen überprüft?

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

Beachten Sie die fließend Weise, die sie für Argumente überprüfen? Nizza :)

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

Also .. Sie den Code überprüft, haben sie einige benutzerdefinierte Klasse, die dies tut ...

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 .... 
} 

Gibt es irgendwelche gemeinsamen Rahmen gibt?

gem installieren netFluentCheck?

:)

Antwort

6

landete ich mit CuttingEdge Conditions, auf Codeplex gefunden.

z.

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

nice :)

+3

CuttingEdge.Conditions ist das Shizzle ;-) – Steven

1

Here's one, die verwendet Ausdrücke. Da es ziemlich trivial ist, scheint jeder seine eigene Umsetzung dieses zu haben ...

+0

Ihr Link ist tot. –

+4

@ M.Babcock Versuchen Sie archive.org. Meine Antwort ist über 4 Jahre alt. Sie können nicht ernsthaft erwarten, dass ich seit 2008 alle meine 1600+ Antworten hier behalte. –

1
+0

FluentValidation wird für die Validierung von Objekten und nicht für die Überprüfung von Argumenten verwendet. – BoeseB

+2

Ich benutze FluentValidation für die Validierung von ASP.NET MVC Action-Argumente, die Objekte sind Das Modell ist stark typisiert. Es wird viele Möglichkeiten geben.Es ist nur eines der Tools, die zur Verfügung stehen, also dachte ich mir, ich würde es für den Fall veröffentlichen, dass es jemandem hilft. –

1

Hier ist eine einfache Klasse, nur ein paar Zeilen lang, dass ich vor einer Weile geschrieben (von hier: http://code.google.com/p/hotwire-queue/wiki/QuickAssert), die etwas Ähnliches wie fließend Validierung der Fall ist, verwendet eine etwas andere Art, dass ich finde ein bisschen einfacher zu lesen (ymmv). Es sind keine Bibliotheken von Drittanbietern erforderlich. Wenn die Überprüfung fehlschlägt, erhalten Sie eine einfache Fehlermeldung mit dem genauen Code, der fehlgeschlagen ist.

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); 

dazu:

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

Hier ist die Klasse, hoffen, dass es für jemanden als Ausgangspunkt hilfreich ist ;-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()); 
     } 
    } 
} 

Zu der Zeit, ich Stellen Sie sicher, schrieb Code Verträge waren nicht unterstützt in Visual Studio 2010, aber jetzt sind, siehe http://msdn.microsoft.com/en-us/magazine/hh148151.aspx

1

Sie können versuchen Bytes2you.Validation (Project). Es ist eine schnelle, erweiterbare, intuitive und einfach zu bedienende C# -Bibliothek, die flüssige APIs für die Validierung von Argumenten bereitstellt. Gibt alles, was Sie zum Implementieren der defensiven Programmierung in Ihrer .NET-Anwendung benötigen.

Verwandte Themen