private void GenerateNewObjectMethods(AssemblyDefinition assembly, TypeDefinition targetType) { foreach (var method in targetType.Methods.ToList()) { if (method.IsConstructor && !targetType.Methods.Any(m => (m.Name == "NewObject" && HaveSameParameters(method, m)))) { _codeGenerator.CreateNewObjectMethod(assembly, method, _tracker); _tracker.MarkModified(assembly); } } }
public void CodeGenerator_GeneratesNewobjectMethod() { var ctor = _assemblyDefinition1.MainModule.Types[1].Methods[1]; _referenceGenerator.Expect(r => r.GetCallableParamListCreateMethod(_assemblyDefinition1, _assemblyDefinition1.MainModule.Types[1].Methods[1], _tracker)).IgnoreArguments().Return( MethodReferenceObjectMother.GetParamListMethodRef(_assemblyDefinition1)); _referenceGenerator.Expect(r => r.GetCallableObjectFactoryCreateMethod(_assemblyDefinition1, _assemblyDefinition1.MainModule, _assemblyDefinition1.MainModule.Types[1], _tracker)).Return( MethodReferenceObjectMother.GetObjectFactoryMethodRef(_assemblyDefinition1)); _codeGenerator.CreateNewObjectMethod(_assemblyDefinition1, ctor, _tracker); var method = _assemblyDefinition1.MainModule.Types[1].Methods[3]; Assert.That(method != null); Assert.That(method.Name == "NewObject"); Assert.That(method.Parameters.Count == 1); }