Merge pull request #3971 from sbwalker/dev

use IServerStartup rather than class naming convention to register server service class
This commit is contained in:
Shaun Walker
2024-03-09 07:54:27 -05:00
committed by GitHub
2 changed files with 6 additions and 11 deletions

View File

@ -291,7 +291,7 @@ namespace Microsoft.Extensions.DependencyInjection
{ {
if (implementationType.AssemblyQualifiedName != null) if (implementationType.AssemblyQualifiedName != null)
{ {
var serviceType = Type.GetType(implementationType.AssemblyQualifiedName.Replace(implementationType.Name, $"I{implementationType.Name}")); var serviceName = implementationType.AssemblyQualifiedName.Replace(implementationType.Name, $"I{implementationType.Name}"); var serviceType = Type.GetType(implementationType.AssemblyQualifiedName.Replace(implementationType.Name, $"I{implementationType.Name}"));
services.AddScoped(serviceType ?? implementationType, implementationType); services.AddScoped(serviceType ?? implementationType, implementationType);
} }
} }
@ -303,14 +303,6 @@ namespace Microsoft.Extensions.DependencyInjection
if (implementationType.AssemblyQualifiedName != null) if (implementationType.AssemblyQualifiedName != null)
{ {
var serviceType = Type.GetType(implementationType.AssemblyQualifiedName.Replace(implementationType.Name, $"I{implementationType.Name}")); var serviceType = Type.GetType(implementationType.AssemblyQualifiedName.Replace(implementationType.Name, $"I{implementationType.Name}"));
if (serviceType == null && implementationType.AssemblyQualifiedName.Contains("Services.Server"))
{
// module server services reference a common interface which is located in the client assembly
var serviceName = implementationType.AssemblyQualifiedName
// convert implementation type name to interface name and change Server assembly to Client
.Replace(".Services.Server", ".Services.I").Replace(".Server,", ".Client,");
serviceType = Type.GetType(serviceName);
}
services.AddTransient(serviceType ?? implementationType, implementationType); services.AddTransient(serviceType ?? implementationType, implementationType);
} }
} }

View File

@ -2,10 +2,12 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Oqtane.Infrastructure; using Oqtane.Infrastructure;
using Oqtane.Modules.HtmlText.Repository;
using Oqtane.Modules.HtmlText.Services;
namespace Oqtane.Modules.HtmlText.Repository namespace Oqtane.Modules.HtmlText.Startup
{ {
public class HtmlTextDbContextFactory : IServerStartup public class ServerStartup : IServerStartup
{ {
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{ {
@ -19,6 +21,7 @@ namespace Oqtane.Modules.HtmlText.Repository
public void ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddTransient<IHtmlTextService, ServerHtmlTextService>();
services.AddDbContextFactory<HtmlTextContext>(opt => { }, ServiceLifetime.Transient); services.AddDbContextFactory<HtmlTextContext>(opt => { }, ServiceLifetime.Transient);
} }
} }