Language: C#
UriBinder processor
public class UriBinder : HttpProcessor { private static List<UriBinding> _bindings; static UriBinder() { _bindings = new List<UriBinding>(); } public static void AddUriBinding<TModel>(string name, string matchRegex, Func<int, object> modelFactory) { _bindings.Add(new UriBinding() {Name = name, MatchRegex = new Regex(matchRegex), ModelFactory = modelFactory}); } public Uri Uri { private get; set; } public object Model { get; private set; } public override void Execute() { UriBinding foundBinding = null; string id = null; foreach (var binding in _bindings) { var match = binding.MatchRegex.Match(this.Uri.AbsoluteUri); if (match.Success) { foundBinding = binding; id = match.Groups[1].Value; break; } } if (foundBinding != null) { Model = foundBinding.ModelFactory(int.Parse(id)); this.SetArgumentName("Model", foundBinding.Name); } } } public class UriBinding { public string Name { get; set; } public Regex MatchRegex { get; set; } public Func<int, object> ModelFactory { get; set; } }
Report Abuse
Subscribe
Discuss
What's new
What is it
New Snippet
Recent Snippets
My Snippets
Web Code
Search

