Skip to content

Instantly share code, notes, and snippets.

@121jigowatts
Created March 19, 2015 09:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 121jigowatts/1b6dc75141b2daacab10 to your computer and use it in GitHub Desktop.
Save 121jigowatts/1b6dc75141b2daacab10 to your computer and use it in GitHub Desktop.
マルチキャストデリゲートでValidation
using System;
namespace Delegate.History
{
public class ValidationByDeletege
{
public static Predicate<string> IsNotEmpty()
{
return value => value.Trim().Length > 0;
}
public static Predicate<string> IsLength(int len)
{
return value => value.Length <= len;
}
public static Predicate<string> IsNumber()
{
return value =>
{
int res;
if (int.TryParse(value, out res)) { return true; }
return false;
};
}
public static bool Validate<T>(T value, Predicate<T> userCallbacks)
{
foreach (Predicate<T> p in userCallbacks.GetInvocationList())
{
bool result = p(value);
if (!result) { return result; }
}
return true;
}
public static bool User(string value)
{
Predicate<string> v1 = IsNotEmpty();
Predicate<string> v2 = IsLength(10);
Predicate<string> v3 = IsNumber();
//マルチキャストデリゲート
var userCallbacks = v1 + v2 + v3;
return Validate<string>(value, userCallbacks);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment