public override void Verify(MethodInfo methodInfo) { if (methodInfo == null) { throw new ArgumentNullException("methodInfo"); } if (methodInfo.ReflectedType == null && !methodInfo.IsObjectEqualsOverrideMethod()) { return; } var firstInstance = builder.CreateInstanceOfType(methodInfo.ReflectedType); var secondInstance = builder.CreateInstanceOfType(methodInfo.ReflectedType); var firstComparisonResult = firstInstance.Equals(secondInstance); var secondComparisonResult = secondInstance.Equals(firstInstance); if (firstComparisonResult != secondComparisonResult) { throw new EqualsSymmetricException( string.Format( "Equals implementation of type {0} is not symmetric. x.Equals(y) returns {1} but y.Equals(x) return {2}", methodInfo.ReflectedType, firstComparisonResult, secondComparisonResult)); } }
public object CreateNewInstance() { var parameters = (from pi in constructorInfo.GetParameters() select specimenBuilder.CreateInstanceOfType(pi.ParameterType)).ToList(); var instance = constructorInfo.Invoke(parameters.ToArray()); collector.AddSpecimens(instance, parameters.ToArray()); return(instance); }