Exemple #1
0
 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);
         }
     }
 }
Exemple #2
0
        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);
        }