Browse Source

Get application name's default value from the entrance assembly

pull/14403/head
Halil İbrahim Kalkan 4 years ago
parent
commit
a9eacacdb9
  1. 14
      framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionConfigurationExtensions.cs
  2. 28
      framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs
  3. 3
      framework/src/Volo.Abp.Core/Volo/Abp/IApplicationNameAccessor.cs

14
framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionConfigurationExtensions.cs

@ -1,6 +1,8 @@
using Microsoft.Extensions.Configuration;
using JetBrains.Annotations;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
using Volo.Abp;
namespace Microsoft.Extensions.DependencyInjection;
@ -11,7 +13,15 @@ public static class ServiceCollectionConfigurationExtensions
return services.Replace(ServiceDescriptor.Singleton<IConfiguration>(configuration));
}
[NotNull]
public static IConfiguration GetConfiguration(this IServiceCollection services)
{
return services.GetConfigurationOrNull() ??
throw new AbpException("Could not find an implementation of " + typeof(IConfiguration).AssemblyQualifiedName + " in the service collection.");
}
[CanBeNull]
public static IConfiguration GetConfigurationOrNull(this IServiceCollection services)
{
var hostBuilderContext = services.GetSingletonInstanceOrNull<HostBuilderContext>();
if (hostBuilderContext?.Configuration != null)
@ -19,6 +29,6 @@ public static class ServiceCollectionConfigurationExtensions
return hostBuilderContext.Configuration as IConfigurationRoot;
}
return services.GetSingletonInstance<IConfiguration>();
return services.GetSingletonInstanceOrNull<IConfiguration>();
}
}

28
framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs

@ -44,7 +44,7 @@ public abstract class AbpApplicationBase : IAbpApplication
var options = new AbpApplicationCreationOptions(services);
optionsAction?.Invoke(options);
ApplicationName = options.ApplicationName;
ApplicationName = GetApplicationName(options);
services.AddSingleton<IAbpApplication>(this);
services.AddSingleton<IApplicationNameAccessor>(this);
@ -312,4 +312,30 @@ public abstract class AbpApplicationBase : IAbpApplication
_configuredServices = true;
}
private static string GetApplicationName(AbpApplicationCreationOptions options)
{
if (!string.IsNullOrWhiteSpace(options.ApplicationName))
{
return options.ApplicationName;
}
var configuration = options.Services.GetConfigurationOrNull();
if (configuration != null)
{
var appNameConfig = configuration["ApplicationName"];
if (string.IsNullOrWhiteSpace(appNameConfig))
{
return appNameConfig;
}
}
var entryAssembly = Assembly.GetEntryAssembly();
if (entryAssembly != null)
{
return entryAssembly.GetName().Name;
}
return null;
}
}

3
framework/src/Volo.Abp.Core/Volo/Abp/IApplicationNameAccessor.cs

@ -1,3 +1,5 @@
using JetBrains.Annotations;
namespace Volo.Abp;
public interface IApplicationNameAccessor
@ -7,5 +9,6 @@ public interface IApplicationNameAccessor
/// This is useful for systems with multiple applications, to distinguish
/// resources of the applications located together.
/// </summary>
[CanBeNull]
string ApplicationName { get; }
}
Loading…
Cancel
Save