KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm creating a Validator<T> class. I'm attempting to implement the Linq SelectMany extension methods for my validator to be able to compose expressions using a Linq query and validate the final result even when the underlying values change. The following test code demonstrates my intent. var a = 2; var b = 3; var va = Validator.Create(() => a, n => n >= 0 && n < 5); var vb = Validator.Create(() => b, n => n >= 0 && n < 5); var vc = from ia in va from ib in vb select ia + ib; Debug.Assert(vc.Value == a + b); //2 + 3 Debug.Assert(vc.Value == 5); Debug.Assert(vc.IsValid == true); a = 7; Debug.Assert(vc.Value == a + b); //7 + 3 Debug.Assert(vc.Value == 10); Debug.Assert(va.IsValid == false); Debug.Assert(vb.IsValid == true); Debug.Assert(vc.IsValid == false); I've seen the following question How do I compose existing Linq Expressions which shows me how to compose two Func<T, bool> 's together using an And expression, but I need to be able to compose functions together in a more, well, functional way. I have, for example, the following two expressions: public Expression<Func<T>> ValueExpression { get; private set; } public Expression<Func<T, bool>> ValidationExpression { get; private set; } I wish to create a new expression like this: public Expression<Func<bool>> IsValidExpression { get { // TODO: Compose expressions rather than compile & invoke. } } More succinctly I'm trying to create these functions: // Specific case Func<Expression<Func<T>>, Expression<Func<T, bool>>, Expression<Func<bool&g
Tags (comma-separated)
Save Edits
Cancel