gitextract_2b22jhad/ ├── .config/ │ └── dotnet-tools.json ├── .copilot-instructions.md ├── .devcontainer/ │ ├── devcontainer.json │ └── scripts/ │ └── post-creation.sh ├── .editorconfig ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── copilot-setup-steps.yml │ ├── default.yml │ ├── docfx.yml │ ├── dotnet-format.yml │ └── release.yml ├── .gitignore ├── .husky/ │ ├── commit-msg │ ├── post-push │ ├── pre-commit │ ├── pre-push │ ├── scripts/ │ │ └── commit-lint.cs │ └── task-runner.json ├── AGENTS.md ├── Directory.Build.props ├── Directory.Build.targets ├── Directory.Packages.props ├── LICENSE ├── README.md ├── WeihanLi.Common.sln.DotSettings ├── WeihanLi.Common.slnx ├── azure-pipelines.yml ├── build/ │ ├── exportReleaseVersion.cs │ ├── sign.props │ ├── version.props │ └── weihanli.snk ├── build.cs ├── docs/ │ ├── .gitignore │ ├── ReleaseNotes.md │ ├── api/ │ │ ├── .gitignore │ │ └── index.md │ ├── articles/ │ │ ├── intro.md │ │ └── toc.yml │ ├── docfx.json │ ├── index.md │ └── toc.yml ├── nuget.config ├── perf/ │ └── WeihanLi.Common.Benchmark/ │ ├── BenchmarkDotNet.Artifacts/ │ │ └── results/ │ │ ├── CreateInstanceTest-report-github.md │ │ ├── CreateInstanceTest-report.csv │ │ ├── CreateInstanceTest-report.html │ │ ├── DITest-report-github.md │ │ ├── DITest-report.csv │ │ ├── DITest-report.html │ │ ├── WeihanLi.Common.Benchmark.DITest-report-github.md │ │ ├── WeihanLi.Common.Benchmark.DITest-report.csv │ │ ├── WeihanLi.Common.Benchmark.DITest-report.html │ │ ├── WeihanLi.Common.Benchmark.MapperTest-report-github.md │ │ ├── WeihanLi.Common.Benchmark.MapperTest-report.csv │ │ ├── WeihanLi.Common.Benchmark.MapperTest-report.html │ │ ├── WeihanLi.Common.Benchmark.PipelineTest-report-github.md │ │ ├── WeihanLi.Common.Benchmark.PipelineTest-report.csv │ │ └── WeihanLi.Common.Benchmark.PipelineTest-report.html │ ├── DITest.cs │ ├── PipelineTest.cs │ ├── Program.cs │ └── WeihanLi.Common.Benchmark.csproj ├── samples/ │ ├── AspNetCoreSample/ │ │ ├── AspNetCoreSample.csproj │ │ ├── Controllers/ │ │ │ ├── EventsController.cs │ │ │ └── HomeController.cs │ │ ├── Events/ │ │ │ ├── EventConsumer.cs │ │ │ └── PageViewEvent.cs │ │ ├── FluentAspectsServiceProviderFactory.cs │ │ ├── LogInterceptor.cs │ │ ├── Models/ │ │ │ └── ErrorViewModel.cs │ │ ├── Program.cs │ │ ├── Startup.cs │ │ ├── Views/ │ │ │ ├── Home/ │ │ │ │ ├── About.cshtml │ │ │ │ ├── Contact.cshtml │ │ │ │ └── Index.cshtml │ │ │ ├── Shared/ │ │ │ │ ├── Error.cshtml │ │ │ │ ├── _Layout.cshtml │ │ │ │ └── _ValidationScriptsPartial.cshtml │ │ │ ├── _ViewImports.cshtml │ │ │ └── _ViewStart.cshtml │ │ ├── appsettings.json │ │ ├── bundleconfig.json │ │ └── wwwroot/ │ │ ├── css/ │ │ │ └── site.css │ │ ├── js/ │ │ │ └── site.js │ │ └── lib/ │ │ ├── bootstrap/ │ │ │ ├── .bower.json │ │ │ ├── LICENSE │ │ │ └── dist/ │ │ │ ├── css/ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ └── bootstrap.css │ │ │ └── js/ │ │ │ ├── bootstrap.js │ │ │ └── npm.js │ │ ├── jquery/ │ │ │ ├── .bower.json │ │ │ ├── LICENSE.txt │ │ │ └── dist/ │ │ │ └── jquery.js │ │ ├── jquery-validation/ │ │ │ ├── .bower.json │ │ │ ├── LICENSE.md │ │ │ └── dist/ │ │ │ ├── additional-methods.js │ │ │ └── jquery.validate.js │ │ └── jquery-validation-unobtrusive/ │ │ ├── .bower.json │ │ └── jquery.validate.unobtrusive.js │ └── DotNetCoreSample/ │ ├── App.config │ ├── AppHostTest.cs │ ├── AspectTest.cs │ ├── Base64UrlEncodeTest.cs │ ├── CommandExecutorTest.cs │ ├── CronHelperTest.cs │ ├── DataExtensionTest.cs │ ├── DependencyInjectionTest.cs │ ├── DisposeTest.cs │ ├── DotNetCoreSample.csproj │ ├── EventTest.cs │ ├── GroupByEqualitySample.cs │ ├── HttpRequesterTest.cs │ ├── InMemoryStreamTest.cs │ ├── LoggerTest.cs │ ├── MapperTest.cs │ ├── NewtonJsonFormatter.cs │ ├── PagedListResultTest.cs │ ├── PipelineTest.cs │ ├── ProcessExecutorTest.cs │ ├── Program.cs │ ├── RepositoryTest.cs │ ├── RequestHelperTest.cs │ ├── SerilogTest.cs │ ├── ServiceDecoratorTest.cs │ ├── TaskTest.cs │ ├── TemplatingSample.cs │ ├── Test/ │ │ └── PagedListModel1.cs │ ├── TotpTest.cs │ └── appsettings.json ├── src/ │ ├── Directory.Build.props │ ├── WeihanLi.Common/ │ │ ├── Abstractions/ │ │ │ └── Properties.cs │ │ ├── Aspect/ │ │ │ ├── AspectDelegate.cs │ │ │ ├── AspectInvokeException.cs │ │ │ ├── AttributeInterceptorResolver.cs │ │ │ ├── DefaultProxyFactory.cs │ │ │ ├── DefaultProxyTypeFactory.cs │ │ │ ├── DelegateInterceptor.cs │ │ │ ├── FluentAspectOptions.cs │ │ │ ├── FluentAspectOptionsExtensions.cs │ │ │ ├── FluentAspects.cs │ │ │ ├── FluentAspectsBuilder.cs │ │ │ ├── FluentAspectsServiceContainerBuilder.cs │ │ │ ├── FluentConfigInterceptorResolver.cs │ │ │ ├── IInterceptionConfiguration.cs │ │ │ ├── IInterceptor.cs │ │ │ ├── IInterceptorResolver.cs │ │ │ ├── IInvocation.cs │ │ │ ├── IProxyFactory.cs │ │ │ ├── IProxyTypeFactory.cs │ │ │ ├── InternalAspectHelper.cs │ │ │ ├── InvocationEnricher.cs │ │ │ ├── InvocationEnricherExtensions.cs │ │ │ ├── MethodSignature.cs │ │ │ ├── ProxyFactoryExtensions.cs │ │ │ ├── ProxyUtils.cs │ │ │ ├── ServiceCollectionExtensions.cs │ │ │ └── ServiceContainerBuilderExtensions.cs │ │ ├── CacheUtil.cs │ │ ├── Compressor/ │ │ │ └── DataCompressor.cs │ │ ├── Data/ │ │ │ ├── Expressions/ │ │ │ │ ├── DateTimeExpressionParser.cs │ │ │ │ └── StringExpressionParser.cs │ │ │ ├── IRepository.cs │ │ │ ├── IUnitOfWork.cs │ │ │ ├── Repository.cs │ │ │ ├── RepositoryExtension.cs │ │ │ ├── SqlExpressionParser.cs │ │ │ ├── SqlExpressionVisitor.cs │ │ │ └── UnitOfWork.cs │ │ ├── DependencyInjection/ │ │ │ ├── DependencyInjectionExtensions.cs │ │ │ ├── FromServiceAttribute.cs │ │ │ ├── ServiceConstructorAttribute.cs │ │ │ ├── ServiceContainer.cs │ │ │ ├── ServiceContainerBuilder.cs │ │ │ ├── ServiceContainerBuilderExtensions.cs │ │ │ ├── ServiceContainerBuilderExtensions.generated.cs │ │ │ ├── ServiceContainerBuilderExtensions.tt │ │ │ ├── ServiceContainerModule.cs │ │ │ ├── ServiceDefinition.cs │ │ │ └── ServiceLifetime.cs │ │ ├── DependencyResolver.cs │ │ ├── Event/ │ │ │ ├── AckQueue.cs │ │ │ ├── DelegateEventHandler.cs │ │ │ ├── EventBase.cs │ │ │ ├── EventBus.cs │ │ │ ├── EventBusExtensions.cs │ │ │ ├── EventHandler.cs │ │ │ ├── EventHandlerFactory.cs │ │ │ ├── EventProperties.cs │ │ │ ├── EventQueueInMemory.cs │ │ │ ├── EventQueuePublisher.cs │ │ │ ├── EventStoreInMemory.cs │ │ │ ├── EventSubscriptionManager.cs │ │ │ ├── IEventBus.cs │ │ │ ├── IEventHandlerFactory.cs │ │ │ ├── IEventPublisher.cs │ │ │ ├── IEventQueue.cs │ │ │ ├── IEventStore.cs │ │ │ └── IEventSubscriber.cs │ │ ├── Extensions/ │ │ │ ├── CollectionExtension.cs │ │ │ ├── CompressionExtension.cs │ │ │ ├── ConfigurationExtension.cs │ │ │ ├── CoreExtension.cs │ │ │ ├── CronExtension.cs │ │ │ ├── DataExtension.cs │ │ │ ├── DbCommandExtension.generated.cs │ │ │ ├── DbCommandExtension.tt │ │ │ ├── DbConnectionExtension.generated.cs │ │ │ ├── DbConnectionExtension.tt │ │ │ ├── DictionaryExtension.cs │ │ │ ├── DumpExtension.cs │ │ │ ├── EnumerableExtension.cs │ │ │ ├── ExceptionExtension.cs │ │ │ ├── ExpressionExtension.cs │ │ │ ├── FuncExtension.cs │ │ │ ├── HttpClientExtension.cs │ │ │ ├── HttpRequesterExtension.cs │ │ │ ├── ILGeneratorExtensions.cs │ │ │ ├── IOExtension.cs │ │ │ ├── JsonSerializeExtension.cs │ │ │ ├── NetExtension.cs │ │ │ ├── ProcessExtension.cs │ │ │ ├── PropertiesExtensions.cs │ │ │ ├── QueryableExtension.cs │ │ │ ├── ReflectionExtension.cs │ │ │ ├── ServiceCollectionExtension.cs │ │ │ ├── StringExtension.cs │ │ │ ├── TaskExtension.cs │ │ │ └── TypeExtension.cs │ │ ├── Guard.cs │ │ ├── Helpers/ │ │ │ ├── ActivatorHelper.cs │ │ │ ├── ApplicationHelper.cs │ │ │ ├── ArrayHelper.cs │ │ │ ├── AsyncLock.cs │ │ │ ├── Base32EncodeHelper.cs │ │ │ ├── Base64UrlEncodeHelper.cs │ │ │ ├── BoundedConcurrentQueue.cs │ │ │ ├── BuildProcess.cs │ │ │ ├── Combinatorics/ │ │ │ │ ├── Combinations.cs │ │ │ │ ├── GenerateOption.cs │ │ │ │ ├── Permutations.cs │ │ │ │ ├── SmallPrimeUtility.cs │ │ │ │ └── Variations.cs │ │ │ ├── CommandExecutor.cs │ │ │ ├── CommandLineParser.cs │ │ │ ├── ConcurrentSet.cs │ │ │ ├── ConsoleHelper.cs │ │ │ ├── ConsoleOutput.cs │ │ │ ├── ContextAccessor.cs │ │ │ ├── ConvertHelper.cs │ │ │ ├── Cron/ │ │ │ │ ├── CalendarHelper.cs │ │ │ │ ├── CronExpression.cs │ │ │ │ ├── CronExpressionFlag.cs │ │ │ │ ├── CronField.cs │ │ │ │ ├── CronFormat.cs │ │ │ │ ├── CronFormatException.cs │ │ │ │ └── TimeZoneHelper.cs │ │ │ ├── CronHelper.cs │ │ │ ├── DataSerializer.cs │ │ │ ├── DelegateHelper.cs │ │ │ ├── DelegateTextWriter.cs │ │ │ ├── DiagnosticHelper.cs │ │ │ ├── DisposableHelper.cs │ │ │ ├── Encoder.cs │ │ │ ├── Enricher.cs │ │ │ ├── EnumHelper.cs │ │ │ ├── EnvHelper.cs │ │ │ ├── ExpressionHelper.cs │ │ │ ├── HashHelper.cs │ │ │ ├── Hosting/ │ │ │ │ ├── AppHost.cs │ │ │ │ ├── AppHostBuilder.cs │ │ │ │ ├── AppHostBuilderExtensions.cs │ │ │ │ ├── AppHostBuilderSettings.cs │ │ │ │ ├── AppHostOptions.cs │ │ │ │ ├── BackgroundService.cs │ │ │ │ ├── CronBasedBackgroundService.cs │ │ │ │ ├── IHostedService.cs │ │ │ │ └── TimerBaseBackgroundService.cs │ │ │ ├── HttpHelper.cs │ │ │ ├── InMemoryStream.cs │ │ │ ├── InterlockedHelper.cs │ │ │ ├── InteropHelper.cs │ │ │ ├── InvokeHelper.cs │ │ │ ├── JsonHelper.cs │ │ │ ├── LogHelper.cs │ │ │ ├── MapHelper.cs │ │ │ ├── NetHelper.cs │ │ │ ├── NewFuncHelper.cs │ │ │ ├── PeriodBatching/ │ │ │ │ ├── BatchedConnectionStatus.cs │ │ │ │ ├── PeriodicBatching.cs │ │ │ │ └── PortableTimer.cs │ │ │ ├── PipelineBuilder.cs │ │ │ ├── Pipelines/ │ │ │ │ ├── AsyncPipelineBuilder.cs │ │ │ │ ├── PipelineBuilder.cs │ │ │ │ ├── PipelineBuilderExtensions.cs │ │ │ │ ├── PipelineMiddleware.cs │ │ │ │ └── ValueAsyncPipelineBuilder.cs │ │ │ ├── ProcessExecutor.cs │ │ │ ├── ProfilerHelper.cs │ │ │ ├── ReflectHelper.cs │ │ │ ├── RequestHelper.cs │ │ │ ├── RetryHelper.cs │ │ │ ├── SecurityHelper.cs │ │ │ ├── SequentialGuidGenerator.cs │ │ │ ├── StringHelper.cs │ │ │ ├── TaskHelper.cs │ │ │ ├── TotpHelper.cs │ │ │ ├── TypeHelper.cs │ │ │ ├── ValidateHelper.cs │ │ │ └── ValueStopwatch.cs │ │ ├── Http/ │ │ │ ├── HttpHeaderNames.cs │ │ │ ├── HttpRequester.cs │ │ │ ├── IHttpRequester.cs │ │ │ ├── JsonHttpContent.cs │ │ │ ├── MockHttpHandler.cs │ │ │ └── NoProxyHttpClientHandler.cs │ │ ├── IDependencyResolver.cs │ │ ├── Json/ │ │ │ ├── DateTimeFormatConverter.cs │ │ │ └── IPAddressConverter.cs │ │ ├── Logging/ │ │ │ ├── ConsoleLoggingProvider.cs │ │ │ ├── FileLoggingProcessor.cs │ │ │ ├── LogHelperExtensions.cs │ │ │ ├── LogHelperFactory.cs │ │ │ ├── LogHelperLogLevel.cs │ │ │ ├── LogHelperLogger.cs │ │ │ ├── LogHelperLoggingEvent.cs │ │ │ ├── LogHelperProvider.cs │ │ │ ├── LoggerGeneric.cs │ │ │ ├── LoggingBuilder.cs │ │ │ ├── LoggingEnricher.cs │ │ │ ├── LoggingFormatter.cs │ │ │ ├── MicrosoftLoggingLogHelperProvider.cs │ │ │ ├── MicrosoftLoggingLoggerExtensions.cs │ │ │ └── PeriodBatchingLoggingService.cs │ │ ├── Models/ │ │ │ ├── BaseEntity.cs │ │ │ ├── Category.cs │ │ │ ├── DataOperationType.cs │ │ │ ├── IdNameModel.cs │ │ │ ├── KeyEntry.cs │ │ │ ├── ModelValidator.cs │ │ │ ├── Ordering.cs │ │ │ ├── PagedListResult.cs │ │ │ ├── PagedRequest.cs │ │ │ ├── Result.cs │ │ │ ├── ResultStatus.cs │ │ │ ├── ReviewState.cs │ │ │ ├── SoftDeleteEntity.cs │ │ │ ├── StringValueDictionary.cs │ │ │ ├── TenantInfo.cs │ │ │ └── ValidationResult.cs │ │ ├── Otp/ │ │ │ ├── OtpHashAlgorithm.cs │ │ │ ├── Totp.cs │ │ │ └── TotpOptions.cs │ │ ├── Polyfill/ │ │ │ └── TaskCompletionSource.cs │ │ ├── README.md │ │ ├── Resource.Designer.cs │ │ ├── Resource.resx │ │ ├── Services/ │ │ │ ├── CancellationTokenProvider.cs │ │ │ ├── IProfiler.cs │ │ │ ├── IScope.cs │ │ │ ├── ITenantProvider.cs │ │ │ ├── IdGenerator.cs │ │ │ ├── TotpService.cs │ │ │ ├── UserIdProvider.cs │ │ │ ├── Validator.cs │ │ │ └── Wrapper.cs │ │ ├── Template/ │ │ │ ├── ConfigurationRenderMiddleare.cs │ │ │ ├── DefaultRenderMiddleware.cs │ │ │ ├── DefaultTemplateParser.cs │ │ │ ├── DefaultTemplateRenderer.cs │ │ │ ├── DependencyInjectionExtensions.cs │ │ │ ├── EnvRenderMiddleware.cs │ │ │ ├── IRenderMiddleware.cs │ │ │ ├── ITemplateEngine.cs │ │ │ ├── ITemplateParser.cs │ │ │ ├── ITemplatePipe.cs │ │ │ ├── ITemplateRenderer.cs │ │ │ ├── ITemplateRendererBuilder.cs │ │ │ ├── TemplateEngine.cs │ │ │ ├── TemplateEngineOptions.cs │ │ │ ├── TemplateEngineServiceBuilder.cs │ │ │ ├── TemplatePipes.cs │ │ │ ├── TemplateRenderContext.cs │ │ │ └── TemplateRendererBuilder.cs │ │ └── WeihanLi.Common.csproj │ ├── WeihanLi.Common.Logging.Serilog/ │ │ ├── README.md │ │ ├── SerilogHelper.cs │ │ ├── SerilogLogHelperProvider.cs │ │ ├── SerilogLogger.cs │ │ ├── SerilogLoggerExtensions.cs │ │ ├── SerilogLoggerProvider.cs │ │ ├── SerilogLoggerScope.cs │ │ └── WeihanLi.Common.Logging.Serilog.csproj │ └── WeihanLi.Extensions.Hosting/ │ ├── CronBasedBackgroundService.cs │ ├── HostingExtensions.cs │ ├── README.md │ ├── TimerBaseBackgroundService.cs │ └── WeihanLi.Extensions.Hosting.csproj ├── test/ │ └── WeihanLi.Common.Test/ │ ├── AspectTest/ │ │ ├── ProxyFactoryTest.cs │ │ ├── ServiceCollectionBuildTest.cs │ │ ├── ServiceContainerBuilderBuildTest.cs │ │ └── TestOutputInterceptor.cs │ ├── AsyncLockTest.cs │ ├── CacheUtilTest.cs │ ├── CompressorTest/ │ │ └── DataCompressorTest.cs │ ├── DependencyInjectionTest.cs │ ├── DisposalTest.cs │ ├── EventsTest/ │ │ ├── AckQueueTest.cs │ │ ├── EventBaseTest.cs │ │ └── EventBusTest.cs │ ├── ExtensionsTest/ │ │ ├── CollectionExtensionTest.cs │ │ ├── CompressExtensionTest.cs │ │ ├── ConfigurationExtensionTest.cs │ │ ├── CoreExtensionTest.cs │ │ ├── EnumerableExtensionTest.cs │ │ ├── ServiceCollectionExtensionTest.cs │ │ ├── StringExtensionTest.cs │ │ ├── TaskExtensionsTest.cs │ │ └── TypeExtensionTest.cs │ ├── HelpersTest/ │ │ ├── ApplicationHelperTest.cs │ │ ├── BoundedConcurrentQueue.cs │ │ ├── CommandExecutorTest.cs │ │ ├── ConsoleHelperTest.cs │ │ ├── EncoderTest.cs │ │ ├── EnumHelperTest.cs │ │ ├── NetHelperTest.cs │ │ ├── ProcessExecutorTest.cs │ │ ├── SecurityHelperTest.cs │ │ ├── StringHelperTest.cs │ │ ├── TotpHelperTest.cs │ │ └── ValidateHelperTest.cs │ ├── HttpTest/ │ │ └── MockHttpHandlerTest.cs │ ├── IdGeneratorTest.cs │ ├── JsonTest/ │ │ └── JsonConvertTest.cs │ ├── ModelsTest/ │ │ ├── PagedListDataTest.cs │ │ ├── PagedRequestTest.cs │ │ ├── ResultTest.cs │ │ ├── ReviewModelTest.cs │ │ └── StringValueDictionaryTest.cs │ ├── ProfilerTest.cs │ ├── ServicesTest/ │ │ ├── CancellationTokenProviderTest.cs │ │ ├── TotpServiceTest.cs │ │ └── UserIdProviderTest.cs │ ├── TemplateTest/ │ │ ├── TemplateParserTest.cs │ │ └── TemplateRendererTest.cs │ └── WeihanLi.Common.Test.csproj └── toc.yml