private PatchResult PatchViewModel(ICommonAssembly assembly, ICommonType viewModelBaseType, ICommonType viewModelType)
        {
            log.Info($"Loading type '{viewModelType.FullName}'...");
            viewModelType.Load(1);
            log.Info($"Type '{viewModelType.FullName}' was loaded");

            var patchingType = viewModelType.GetReflectionAttribute <PatchingViewModelAttribute>()?.PatchingType
                               ?? applicationPatcherWpfConfiguration.DefaultViewModelPatchingType;

            log.Info($"View model patching type: '{patchingType}'");

            return(PatchHelper.PatchApplication(viewModelPartPatchers, patcher => patcher.Patch(assembly, viewModelBaseType, viewModelType, patchingType), log));
        }
        private PatchResult PatchFrameworkElement(ICommonAssembly assembly, ICommonType frameworkElementType)
        {
            log.Info($"Loading type '{frameworkElementType.FullName}'...");
            frameworkElementType.Load(1);
            log.Info($"Type '{frameworkElementType.FullName}' was loaded");

            var patchingType = frameworkElementType.GetReflectionAttribute <PatchingFrameworkElementAttribute>()?.PatchingType
                               ?? applicationPatcherWpfConfiguration.DefaultFrameworkElementPatchingType;

            log.Info($"Framework element patching type: '{patchingType}'");

            return(PatchHelper.PatchApplication(frameworkElementPartPatchers, patcher => patcher.Patch(assembly, frameworkElementType, patchingType), log));
        }