private static void RemoveAttributesFromViewModels(ICommonAssembly assembly) { var viewModelBaseType = assembly.GetCommonType(KnownTypeNames.ViewModelBase); var viewModelTypes = assembly.GetInheritanceCommonTypesFromThisAssembly(viewModelBaseType).ToArray(); foreach (var viewModelType in viewModelTypes.Select(type => type.Load())) { viewModelType.MonoCecil.RemoveAttributes <PatchingViewModelAttribute>(); viewModelType.MonoCecil.RemoveAttributes <NotPatchingViewModelAttribute>(); foreach (var property in viewModelType.Fields) { property.MonoCecil.RemoveAttributes <ConnectFieldToPropertyAttribute>(); } foreach (var property in viewModelType.Properties) { property.MonoCecil.RemoveAttributes <NotUseSearchByNameAttribute>(); property.MonoCecil.RemoveAttributes <PatchingPropertyAttribute>(); property.MonoCecil.RemoveAttributes <NotPatchingPropertyAttribute>(); property.MonoCecil.RemoveAttributes <ConnectPropertyToFieldAttribute>(); property.MonoCecil.RemoveAttributes <ConnectPropertyToMethodAttribute>(); } foreach (var property in viewModelType.Methods) { property.MonoCecil.RemoveAttributes <NotUseSearchByNameAttribute>(); property.MonoCecil.RemoveAttributes <PatchingCommandAttribute>(); property.MonoCecil.RemoveAttributes <NotPatchingCommandAttribute>(); property.MonoCecil.RemoveAttributes <ConnectMethodToMethodAttribute>(); property.MonoCecil.RemoveAttributes <ConnectMethodToPropertyAttribute>(); } } }
public override PatchResult Patch(ICommonAssembly assembly) { log.Info("Patching view model types..."); var selectingType = assembly.GetReflectionAttribute <SelectingViewModelAttribute>()?.SelectingType ?? applicationPatcherWpfConfiguration.DefaultViewModelSelectingType; log.Info($"View model selecting type: '{selectingType}'"); var viewModelBaseType = assembly.GetCommonType(KnownTypeNames.ViewModelBase, true).Load(); CheckAssembly(assembly, viewModelBaseType); var viewModelTypes = assembly.GetInheritanceCommonTypesFromThisAssembly(viewModelBaseType).ToArray(); if (!viewModelTypes.Any()) { log.Info("Not found view model types"); return(PatchResult.Continue); } log.Debug("View model types found:", viewModelTypes.Select(viewModel => viewModel.FullName).OrderBy(fullName => fullName)); var patchingViewModelTypes = viewModelTypes .Where(viewModelType => viewModelType.NotContainsReflectionAttribute <NotPatchingViewModelAttribute>() && (selectingType == ViewModelSelectingType.All || viewModelType.ContainsReflectionAttribute <PatchingViewModelAttribute>())) .ToArray(); if (!patchingViewModelTypes.Any()) { log.Info("Not found patching view model types"); return(PatchResult.Continue); } log.Debug("Patching view model types:", patchingViewModelTypes.Select(viewModel => viewModel.FullName).OrderBy(fullName => fullName)); foreach (var viewModelType in patchingViewModelTypes) { log.Info($"Patching type '{viewModelType.FullName}'..."); if (PatchViewModel(assembly, viewModelBaseType, viewModelType) == PatchResult.Cancel) { return(PatchResult.Cancel); } log.Info($"Type '{viewModelType.FullName}' was patched"); } log.Info("View model types was patched"); return(PatchResult.Continue); }
public override PatchResult Patch(ICommonAssembly assembly) { log.Info("Patching framework element types..."); var selectingType = assembly.GetReflectionAttribute <SelectingFrameworkElementAttribute>()?.SelectingType ?? applicationPatcherWpfConfiguration.DefaultFrameworkElementSelectingType; log.Info($"Framework element selecting type: '{selectingType}'"); var frameworkElementBaseType = assembly.GetCommonType(KnownTypeNames.FrameworkElement, true).Load(); CheckAssembly(assembly, frameworkElementBaseType); var frameworkElementTypes = assembly.GetInheritanceCommonTypesFromThisAssembly(frameworkElementBaseType).ToArray(); if (!frameworkElementTypes.Any()) { log.Info("Not found framework element types"); return(PatchResult.Continue); } log.Debug("Framework element types found:", frameworkElementTypes.Select(frameworkElement => frameworkElement.FullName).OrderBy(fullName => fullName)); var patchingFrameworkElementTypes = frameworkElementTypes .Where(frameworkElementType => frameworkElementType.NotContainsReflectionAttribute <NotPatchingFrameworkElementAttribute>() && (selectingType == FrameworkElementSelectingType.All || frameworkElementType.ContainsReflectionAttribute <PatchingFrameworkElementAttribute>())) .ToArray(); if (!patchingFrameworkElementTypes.Any()) { log.Info("Not found patching framework element types"); return(PatchResult.Continue); } log.Debug("Patching framework element types:", patchingFrameworkElementTypes.Select(frameworkElement => frameworkElement.FullName).OrderBy(fullName => fullName)); foreach (var frameworkElementType in patchingFrameworkElementTypes) { log.Info($"Patching type '{frameworkElementType.FullName}'..."); if (PatchFrameworkElement(assembly, frameworkElementType) == PatchResult.Cancel) { return(PatchResult.Cancel); } log.Info($"Type '{frameworkElementType.FullName}' was patched"); } log.Info("Framework element types was patched"); return(PatchResult.Continue); }
private static void RemoveAttributesFromFrameworkElements(ICommonAssembly assembly) { var frameworkElementBaseType = assembly.GetCommonType(KnownTypeNames.FrameworkElement, true); var frameworkElementTypes = assembly.GetInheritanceCommonTypesFromThisAssembly(frameworkElementBaseType).ToArray(); foreach (var frameworkElementType in frameworkElementTypes.Select(type => type.Load())) { frameworkElementType.MonoCecil.RemoveAttributes <PatchingFrameworkElementAttribute>(); frameworkElementType.MonoCecil.RemoveAttributes <NotPatchingFrameworkElementAttribute>(); foreach (var property in frameworkElementType.Fields) { property.MonoCecil.RemoveAttributes <ConnectFieldToPropertyAttribute>(); } foreach (var property in frameworkElementType.Properties) { property.MonoCecil.RemoveAttributes <NotUseSearchByNameAttribute>(); property.MonoCecil.RemoveAttributes <PatchingPropertyAttribute>(); property.MonoCecil.RemoveAttributes <NotPatchingPropertyAttribute>(); property.MonoCecil.RemoveAttributes <ConnectPropertyToFieldAttribute>(); } } }
public static IEnumerable <ICommonType> GetInheritanceCommonTypesFromThisAssembly(this ICommonAssembly commonAssembly, IHasType baseHasType) { return(commonAssembly.GetInheritanceCommonTypesFromThisAssembly(baseHasType.Type)); }