Make MethodCall
classes non-generic
#663
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is achieved by separating the fluent API (which relies heavily on the type system and generics) from the actual implementation code. Fluent API methods are moved into generic types in the
Moq.Language.Flow
namespace. These new types wrapMethodCall
s and implement the fluent API interfaces.MethodCall
et al. then no longer need to implement those, nor need they be generic anymore.Getting rid of generics in the
MethodCall
types should allow us to apply optimizations, de-duplications and code simplifications much more easily because static types won't get in the way needlessly everywhere.This benefit can be seen already by the removal of two redundant
MethodCall
types:MethodCall<T>
andSetterMethodCall<T, TProperty>
, both of which were essentially duplicates ofMethodCall
.