private void ReplaceNewStatement(AssemblyDefinition assembly, TypeDefinition analyzedType) { foreach (var targetMethod in analyzedType.Methods) { if (_replacer.ReplaceNewStatements(assembly, analyzedType, targetMethod, _tracker, _infoWrapper)) { _tracker.MarkModified(assembly); } } }
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 Transform(IAssemblyTracker tracker) { ArgumentUtility.CheckNotNull ("tracker", tracker); MethodDefinition customAttributeCtor; var modifiedMethods = from assemblyDefinition in tracker.GetAssemblies () from typeDefinition in assemblyDefinition.LoadAllTypes () where _wrapper.ShouldVirtualizeType (typeDefinition) from methodDefinition in typeDefinition.Methods where _wrapper.ShouldVirtualizeMethod (methodDefinition) select new { Assembly = assemblyDefinition, Method = methodDefinition }; foreach (var modifiedMethodDefinition in modifiedMethods.ToList ()) { if (!modifiedMethodDefinition.Method.IsVirtual && !modifiedMethodDefinition.Method.IsStatic && !modifiedMethodDefinition.Method.IsConstructor && !modifiedMethodDefinition.Method.CustomAttributes.Any (ca => ca.AttributeType.Namespace == "System.Runtime.Serialization")) { tracker.MarkModified (modifiedMethodDefinition.Assembly); var virtualMethod = _codeGenerator.GenerateMethodAndMoveBody ( modifiedMethodDefinition.Method, _wrapper.GetUnspeakableMethodName (modifiedMethodDefinition.Method) ); modifiedMethodDefinition.Method.DeclaringType.Methods.Add (virtualMethod); if ((customAttributeCtor = _wrapper.GetVirtualizedAttribute (modifiedMethodDefinition.Assembly, tracker)) != null) AddAttributes (modifiedMethodDefinition.Method, virtualMethod, customAttributeCtor); } } }
public void Transform(IAssemblyTracker tracker) { ArgumentUtility.CheckNotNull("tracker", tracker); _selectionStrategy = _selectionFactory.CreateSelector(tracker); var modifiedMethods = from assemblyDefinition in tracker.GetAssemblies() from typeDefinition in assemblyDefinition.LoadAllTypes() from methodDefinition in typeDefinition.Methods where _selectionStrategy.IsTarget(methodDefinition, assemblyDefinition) select new { Assembly = assemblyDefinition, Method = methodDefinition }; foreach (var modifiedMethodDefinition in modifiedMethods.ToList()) { if (!modifiedMethodDefinition.Method.IsVirtual && !modifiedMethodDefinition.Method.IsStatic && !modifiedMethodDefinition.Method.IsConstructor && !modifiedMethodDefinition.Method.CustomAttributes.Any(ca => ca.AttributeType.Namespace == "System.Runtime.Serialization")) { tracker.MarkModified(modifiedMethodDefinition.Assembly); var virtualMethod = _codeGenerator.GenerateMethodAndMoveBody(modifiedMethodDefinition.Method); modifiedMethodDefinition.Method.DeclaringType.Methods.Add(virtualMethod); AddAttributes(virtualMethod); _markingAttributeStrategy.AddCustomAttribute(modifiedMethodDefinition.Method, modifiedMethodDefinition.Assembly); } } }
public void Transform(IAssemblyTracker tracker) { ArgumentUtility.CheckNotNull("tracker", tracker); MethodDefinition customAttributeCtor; var modifiedMethods = from assemblyDefinition in tracker.GetAssemblies() from typeDefinition in assemblyDefinition.LoadAllTypes() where _wrapper.ShouldVirtualizeType(typeDefinition) from methodDefinition in typeDefinition.Methods where _wrapper.ShouldVirtualizeMethod(methodDefinition) select new { Assembly = assemblyDefinition, Method = methodDefinition }; foreach (var modifiedMethodDefinition in modifiedMethods.ToList()) { if (!modifiedMethodDefinition.Method.IsVirtual && !modifiedMethodDefinition.Method.IsStatic && !modifiedMethodDefinition.Method.IsConstructor && !modifiedMethodDefinition.Method.CustomAttributes.Any(ca => ca.AttributeType.Namespace == "System.Runtime.Serialization")) { tracker.MarkModified(modifiedMethodDefinition.Assembly); var virtualMethod = _codeGenerator.GenerateMethodAndMoveBody( modifiedMethodDefinition.Method, _wrapper.GetUnspeakableMethodName(modifiedMethodDefinition.Method) ); modifiedMethodDefinition.Method.DeclaringType.Methods.Add(virtualMethod); if ((customAttributeCtor = _wrapper.GetVirtualizedAttribute(modifiedMethodDefinition.Assembly, tracker)) != null) { AddAttributes(modifiedMethodDefinition.Method, virtualMethod, customAttributeCtor); } } } }
public void Transform(IAssemblyTracker tracker) { ArgumentUtility.CheckNotNull ("tracker", tracker); _selectionStrategy = _selectionFactory.CreateSelector (tracker); var modifiedMethods = from assemblyDefinition in tracker.GetAssemblies () from typeDefinition in assemblyDefinition.LoadAllTypes () from methodDefinition in typeDefinition.Methods where _selectionStrategy.IsTarget (methodDefinition, assemblyDefinition) select new { Assembly = assemblyDefinition, Method = methodDefinition }; foreach (var modifiedMethodDefinition in modifiedMethods.ToList ()) { if (!modifiedMethodDefinition.Method.IsVirtual && !modifiedMethodDefinition.Method.IsStatic && !modifiedMethodDefinition.Method.IsConstructor && !modifiedMethodDefinition.Method.CustomAttributes.Any (ca => ca.AttributeType.Namespace == "System.Runtime.Serialization")) { tracker.MarkModified (modifiedMethodDefinition.Assembly); var virtualMethod = _codeGenerator.GenerateMethodAndMoveBody (modifiedMethodDefinition.Method); modifiedMethodDefinition.Method.DeclaringType.Methods.Add (virtualMethod); AddAttributes (virtualMethod); _markingAttributeStrategy.AddCustomAttribute (modifiedMethodDefinition.Method, modifiedMethodDefinition.Assembly); } } }