Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void Rewrite(string assemblyLocation) {
- var assemblyDefinition = AssemblyDefinition.ReadAssembly(assemblyLocation);
- foreach (var type in assemblyDefinition.Modules.SelectMany(m => m.Types).Where(t => t.IsPublic)) {
- UnsealType(type);
- }
- SaveTestingAssembly(assemblyLocation, assemblyDefinition);
- }
- private static void UnsealType(TypeDefinition type) {
- type.IsSealed = false;
- foreach (var method in type.Methods.Where(m => m.IsPublic && !m.IsStatic && !m.IsConstructor)) {
- method.IsVirtual = true;
- }
- foreach (var nestedTypes in type.NestedTypes) {
- UnsealType(nestedTypes);
- }
- }
- private static void SaveTestingAssembly(string assemblyLocation, AssemblyDefinition assemblyDefinition) {
- assemblyDefinition.Name = new AssemblyNameDefinition(assemblyDefinition.Name.Name + ".ForTesting", assemblyDefinition.Name.Version);
- var newAssemblyPath = Path.Combine(Path.GetDirectoryName(assemblyLocation), Path.GetFileNameWithoutExtension(assemblyLocation) + ".ForTesting.dll");
- assemblyDefinition.Write(newAssemblyPath);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement