public static Action <Predicate <AssertionSubjectProperties> > Properties <TSubject>(this Action <Predicate <TSubject> > assertion) { return((Predicate <AssertionSubjectProperties> predicate) => { assertion.Invoke((subject) => { var newSubject = new AssertionSubjectProperties(subject); return predicate.Invoke(newSubject); }); }); }
public static Action <Predicate <AssertionSubjectProperties> > PropertiesWithout <TSubject, TResult>(this Action <Predicate <TSubject> > assertion, Expression <Func <TSubject, TResult> > excluder) { return((Predicate <AssertionSubjectProperties> predicate) => { assertion.Invoke((subject) => { var excludedPropertyName = (excluder.Body as MemberExpression)?.Member?.Name; var newSubject = new AssertionSubjectProperties(subject, excludedPropertyName); return predicate.Invoke(newSubject); }); }); }