Browse Source

Merge pull request #17561 from abpframework/liangshiwei/group15

Group15 Enable nullable annotations
pull/17565/head
maliming 3 years ago
committed by GitHub
parent
commit
0c8b0fb647
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 32
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/DaprAspNetCore/AbpDaprEndpointRouteBuilderExtensions.cs
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.csproj
  3. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprEventsController.cs
  4. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo.Abp.AspNetCore.Mvc.Dapr.csproj
  5. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprAppApiTokenValidator.cs
  6. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprHttpContextExtensions.cs
  7. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/IDaprAppApiTokenValidator.cs
  8. 2
      framework/src/Volo.Abp.Imaging.Abstractions/Volo.Abp.Imaging.Abstractions.csproj
  9. 4
      framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/IImageCompressor.cs
  10. 4
      framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/IImageCompressorContributor.cs
  11. 4
      framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/IImageResizer.cs
  12. 4
      framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/IImageResizerContributor.cs
  13. 4
      framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageCompressor.cs
  14. 4
      framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageResizer.cs
  15. 2
      framework/src/Volo.Abp.Imaging.AspNetCore/Volo.Abp.Imaging.AspNetCore.csproj
  16. 2
      framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/CompressImageAttribute.cs
  17. 2
      framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/ResizeImageAttribute.cs
  18. 2
      framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj
  19. 6
      framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs
  20. 6
      framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs
  21. 2
      framework/src/Volo.Abp.Imaging.MagickNet/Volo.Abp.Imaging.MagickNet.csproj
  22. 6
      framework/src/Volo.Abp.Imaging.MagickNet/Volo/Abp/Imaging/MagickImageCompressorContributor.cs
  23. 6
      framework/src/Volo.Abp.Imaging.MagickNet/Volo/Abp/Imaging/MagickImageResizerContributor.cs
  24. 2
      framework/src/Volo.Abp.Json/Volo.Abp.Json.csproj
  25. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo.Abp.TextTemplating.Core.csproj
  26. 8
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/AbpTemplateRenderer.cs
  27. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/AbpTextTemplatingOptions.cs
  28. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/IDynamicTemplateDefinitionStore.cs
  29. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/IStaticTemplateDefinitionStore.cs
  30. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateContentContributor.cs
  31. 8
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateContentProvider.cs
  32. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateDefinitionContext.cs
  33. 3
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateDefinitionManager.cs
  34. 6
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateRenderer.cs
  35. 6
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateRenderingEngine.cs
  36. 6
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/NullIDynamicTemplateDefinitionStore.cs
  37. 6
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/StaticTemplateDefinitionStore.cs
  38. 5
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateContentContributorContext.cs
  39. 12
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateContentProvider.cs
  40. 35
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinition.cs
  41. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionContext.cs
  42. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionExtensions.cs
  43. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs
  44. 6
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateRenderingEngineBase.cs
  45. 6
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/FileInfoLocalizedTemplateContentReader.cs
  46. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/ILocalizedTemplateContentReader.cs
  47. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/NullLocalizedTemplateContentReader.cs
  48. 4
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/TemplateContentFileInfo.cs
  49. 2
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/VirtualFileTemplateContentContributor.cs
  50. 4
      framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/VirtualFolderLocalizedTemplateContentReader.cs
  51. 2
      framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj
  52. 2
      framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/AbpRazorTemplateCSharpCompiler.cs
  53. 2
      framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/DefaultAbpRazorProjectEngineFactory.cs
  54. 2
      framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/EmptyProjectFileSystem.cs
  55. 2
      framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/IAbpRazorProjectEngineFactory.cs
  56. 12
      framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/IRazorTemplatePage.cs
  57. 2
      framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/NotFoundProjectItem.cs
  58. 20
      framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/RazorTemplatePageBase.cs
  59. 26
      framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/RazorTemplateRenderingEngine.cs
  60. 2
      framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj
  61. 2
      framework/src/Volo.Abp.TextTemplating.Scriban/Volo/Abp/TextTemplating/Scriban/ScribanTemplateLocalizer.cs
  62. 16
      framework/src/Volo.Abp.TextTemplating.Scriban/Volo/Abp/TextTemplating/Scriban/ScribanTemplateRenderingEngine.cs
  63. 2
      framework/src/Volo.Abp.TextTemplating/Volo.Abp.TextTemplating.csproj

32
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/DaprAspNetCore/AbpDaprEndpointRouteBuilderExtensions.cs

@ -30,7 +30,7 @@ namespace Dapr
/// <summary> /// <summary>
/// An optional delegate used to configure the subscriptions. /// An optional delegate used to configure the subscriptions.
/// </summary> /// </summary>
public Func<List<AbpSubscription>, Task> SubscriptionsCallback { get; set; } public Func<List<AbpSubscription>, Task>? SubscriptionsCallback { get; set; }
} }
/// <summary> /// <summary>
@ -41,32 +41,32 @@ namespace Dapr
/// <summary> /// <summary>
/// Gets or sets the topic name. /// Gets or sets the topic name.
/// </summary> /// </summary>
public string Topic { get; set; } public string Topic { get; set; } = default!;
/// <summary> /// <summary>
/// Gets or sets the pubsub name /// Gets or sets the pubsub name
/// </summary> /// </summary>
public string PubsubName { get; set; } public string PubsubName { get; set; } = default!;
/// <summary> /// <summary>
/// Gets or sets the route /// Gets or sets the route
/// </summary> /// </summary>
public string Route { get; set; } public string? Route { get; set; }
/// <summary> /// <summary>
/// Gets or sets the routes /// Gets or sets the routes
/// </summary> /// </summary>
public AbpRoutes Routes { get; set; } public AbpRoutes? Routes { get; set; }
/// <summary> /// <summary>
/// Gets or sets the metadata. /// Gets or sets the metadata.
/// </summary> /// </summary>
public AbpMetadata Metadata { get; set; } public AbpMetadata? Metadata { get; set; }
/// <summary> /// <summary>
/// Gets or sets the deadletter topic. /// Gets or sets the deadletter topic.
/// </summary> /// </summary>
public string DeadLetterTopic { get; set; } public string? DeadLetterTopic { get; set; }
} }
/// <summary> /// <summary>
@ -99,12 +99,12 @@ namespace Dapr
/// <summary> /// <summary>
/// Gets or sets the default route /// Gets or sets the default route
/// </summary> /// </summary>
public string Default { get; set; } public string? Default { get; set; }
/// <summary> /// <summary>
/// Gets or sets the routing rules /// Gets or sets the routing rules
/// </summary> /// </summary>
public List<AbpRule> Rules { get; set; } public List<AbpRule>? Rules { get; set; }
} }
/// <summary> /// <summary>
@ -115,12 +115,12 @@ namespace Dapr
/// <summary> /// <summary>
/// Gets or sets the CEL expression to match this route. /// Gets or sets the CEL expression to match this route.
/// </summary> /// </summary>
public string Match { get; set; } public string Match { get; set; } = default!;
/// <summary> /// <summary>
/// Gets or sets the path of the route. /// Gets or sets the path of the route.
/// </summary> /// </summary>
public string Path { get; set; } public string Path { get; set; } = default!;
} }
} }
@ -166,7 +166,7 @@ namespace Microsoft.AspNetCore.Builder
return CreateSubscribeEndPoint(endpoints, options); return CreateSubscribeEndPoint(endpoints, options);
} }
private static IEndpointConventionBuilder CreateSubscribeEndPoint(IEndpointRouteBuilder endpoints, AbpSubscribeOptions options = null) private static IEndpointConventionBuilder CreateSubscribeEndPoint(IEndpointRouteBuilder endpoints, AbpSubscribeOptions? options = null)
{ {
if (endpoints is null) if (endpoints is null)
{ {
@ -175,7 +175,7 @@ namespace Microsoft.AspNetCore.Builder
return endpoints.MapGet("dapr/subscribe", async context => return endpoints.MapGet("dapr/subscribe", async context =>
{ {
var logger = context.RequestServices.GetRequiredService<ILoggerFactory>().CreateLogger("DaprTopicSubscription"); var logger = context.RequestServices.GetService<ILoggerFactory>()?.CreateLogger("DaprTopicSubscription");
var dataSource = context.RequestServices.GetRequiredService<EndpointDataSource>(); var dataSource = context.RequestServices.GetRequiredService<EndpointDataSource>();
var subscriptions = dataSource.Endpoints var subscriptions = dataSource.Endpoints
.OfType<RouteEndpoint>() .OfType<RouteEndpoint>()
@ -185,7 +185,7 @@ namespace Microsoft.AspNetCore.Builder
var topicMetadata = e.Metadata.GetOrderedMetadata<ITopicMetadata>(); var topicMetadata = e.Metadata.GetOrderedMetadata<ITopicMetadata>();
var originalTopicMetadata = e.Metadata.GetOrderedMetadata<IOriginalTopicMetadata>(); var originalTopicMetadata = e.Metadata.GetOrderedMetadata<IOriginalTopicMetadata>();
var subs = new List<(string PubsubName, string Name, string DeadLetterTopic, bool? EnableRawPayload, string Match, int Priority, Dictionary<string, string[]> OriginalTopicMetadata, string MetadataSeparator, RoutePattern RoutePattern)>(); var subs = new List<(string PubsubName, string Name, string? DeadLetterTopic, bool? EnableRawPayload, string Match, int Priority, Dictionary<string, string[]> OriginalTopicMetadata, string? MetadataSeparator, RoutePattern RoutePattern)>();
for (int i = 0; i < topicMetadata.Count(); i++) for (int i = 0; i < topicMetadata.Count(); i++)
{ {
@ -211,7 +211,7 @@ namespace Microsoft.AspNetCore.Builder
{ {
var first = e.First(); var first = e.First();
var rawPayload = e.Any(e => e.EnableRawPayload.GetValueOrDefault()); var rawPayload = e.Any(e => e.EnableRawPayload.GetValueOrDefault());
var metadataSeparator = e.FirstOrDefault(e => !string.IsNullOrEmpty(e.MetadataSeparator)).MetadataSeparator ?? ","; var metadataSeparator = e.FirstOrDefault(e => !string.IsNullOrEmpty(e.MetadataSeparator)).MetadataSeparator?.ToString() ?? ",";
var rules = e.Where(e => !string.IsNullOrEmpty(e.Match)).ToList(); var rules = e.Where(e => !string.IsNullOrEmpty(e.Match)).ToList();
var defaultRoutes = e.Where(e => string.IsNullOrEmpty(e.Match)).Select(e => RoutePatternToString(e.RoutePattern)).ToList(); var defaultRoutes = e.Where(e => string.IsNullOrEmpty(e.Match)).Select(e => RoutePatternToString(e.RoutePattern)).ToList();
var defaultRoute = defaultRoutes.FirstOrDefault(); var defaultRoute = defaultRoutes.FirstOrDefault();
@ -276,7 +276,7 @@ namespace Microsoft.AspNetCore.Builder
.OrderBy(e => (e.PubsubName, e.Topic)) .OrderBy(e => (e.PubsubName, e.Topic))
.ToList(); .ToList();
await options?.SubscriptionsCallback(subscriptions); await options?.SubscriptionsCallback!(subscriptions)!;
await context.Response.WriteAsync(JsonSerializer.Serialize(subscriptions, await context.Response.WriteAsync(JsonSerializer.Serialize(subscriptions,
new JsonSerializerOptions new JsonSerializerOptions
{ {

2
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

4
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprEventsController.cs

@ -41,8 +41,8 @@ public class AbpAspNetCoreMvcDaprEventsController : AbpController
} }
else else
{ {
var eventData = daprSerializer.Deserialize(data, distributedEventBus.GetEventType(topic)); var eventData = daprSerializer.Deserialize(data, distributedEventBus.GetEventType(topic!));
await distributedEventBus.TriggerHandlersAsync(distributedEventBus.GetEventType(topic), eventData); await distributedEventBus.TriggerHandlersAsync(distributedEventBus.GetEventType(topic!), eventData);
} }
return Ok(); return Ok();

2
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo.Abp.AspNetCore.Mvc.Dapr.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

6
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprAppApiTokenValidator.cs

@ -50,9 +50,9 @@ public class DaprAppApiTokenValidator : IDaprAppApiTokenValidator, ISingletonDep
return expectedAppApiToken == headerAppApiToken; return expectedAppApiToken == headerAppApiToken;
} }
public virtual string GetDaprAppApiTokenOrNull() public virtual string? GetDaprAppApiTokenOrNull()
{ {
string apiTokenHeader = HttpContext.Request.Headers["dapr-api-token"]; string? apiTokenHeader = HttpContext.Request.Headers["dapr-api-token"];
if (string.IsNullOrEmpty(apiTokenHeader) || apiTokenHeader.Length < 1) if (string.IsNullOrEmpty(apiTokenHeader) || apiTokenHeader.Length < 1)
{ {
return null; return null;
@ -61,7 +61,7 @@ public class DaprAppApiTokenValidator : IDaprAppApiTokenValidator, ISingletonDep
return apiTokenHeader; return apiTokenHeader;
} }
protected virtual string GetConfiguredAppApiTokenOrNull() protected virtual string? GetConfiguredAppApiTokenOrNull()
{ {
return HttpContext return HttpContext
.RequestServices .RequestServices

2
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprHttpContextExtensions.cs

@ -22,7 +22,7 @@ public static class DaprHttpContextExtensions
.IsValidDaprAppApiToken(); .IsValidDaprAppApiToken();
} }
public static string GetDaprAppApiTokenOrNull(HttpContext httpContext) public static string? GetDaprAppApiTokenOrNull(HttpContext httpContext)
{ {
return httpContext return httpContext
.RequestServices .RequestServices

2
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/IDaprAppApiTokenValidator.cs

@ -6,5 +6,5 @@ public interface IDaprAppApiTokenValidator
bool IsValidDaprAppApiToken(); bool IsValidDaprAppApiToken();
string GetDaprAppApiTokenOrNull(); string? GetDaprAppApiTokenOrNull();
} }

2
framework/src/Volo.Abp.Imaging.Abstractions/Volo.Abp.Imaging.Abstractions.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<PackageId>Volo.Abp.Imaging.Abstractions</PackageId> <PackageId>Volo.Abp.Imaging.Abstractions</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>

4
framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/IImageCompressor.cs

@ -9,13 +9,13 @@ public interface IImageCompressor
{ {
Task<ImageCompressResult<Stream>> CompressAsync( Task<ImageCompressResult<Stream>> CompressAsync(
Stream stream, Stream stream,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
); );
Task<ImageCompressResult<byte[]>> CompressAsync( Task<ImageCompressResult<byte[]>> CompressAsync(
byte[] bytes, byte[] bytes,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
); );
} }

4
framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/IImageCompressorContributor.cs

@ -9,10 +9,10 @@ public interface IImageCompressorContributor
{ {
Task<ImageCompressResult<Stream>> TryCompressAsync( Task<ImageCompressResult<Stream>> TryCompressAsync(
Stream stream, Stream stream,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default); CancellationToken cancellationToken = default);
Task<ImageCompressResult<byte[]>> TryCompressAsync( Task<ImageCompressResult<byte[]>> TryCompressAsync(
byte[] bytes, byte[] bytes,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default); CancellationToken cancellationToken = default);
} }

4
framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/IImageResizer.cs

@ -10,14 +10,14 @@ public interface IImageResizer
Task<ImageResizeResult<Stream>> ResizeAsync( Task<ImageResizeResult<Stream>> ResizeAsync(
Stream stream, Stream stream,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
); );
Task<ImageResizeResult<byte[]>> ResizeAsync( Task<ImageResizeResult<byte[]>> ResizeAsync(
byte[] bytes, byte[] bytes,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
); );
} }

4
framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/IImageResizerContributor.cs

@ -10,12 +10,12 @@ public interface IImageResizerContributor
Task<ImageResizeResult<Stream>> TryResizeAsync( Task<ImageResizeResult<Stream>> TryResizeAsync(
Stream stream, Stream stream,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default); CancellationToken cancellationToken = default);
Task<ImageResizeResult<byte[]>> TryResizeAsync( Task<ImageResizeResult<byte[]>> TryResizeAsync(
byte[] bytes, byte[] bytes,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default); CancellationToken cancellationToken = default);
} }

4
framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageCompressor.cs

@ -23,7 +23,7 @@ public class ImageCompressor : IImageCompressor, ITransientDependency
public virtual async Task<ImageCompressResult<Stream>> CompressAsync( public virtual async Task<ImageCompressResult<Stream>> CompressAsync(
[NotNull] Stream stream, [NotNull] Stream stream,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
Check.NotNull(stream, nameof(stream)); Check.NotNull(stream, nameof(stream));
@ -45,7 +45,7 @@ public class ImageCompressor : IImageCompressor, ITransientDependency
public virtual async Task<ImageCompressResult<byte[]>> CompressAsync( public virtual async Task<ImageCompressResult<byte[]>> CompressAsync(
[NotNull] byte[] bytes, [NotNull] byte[] bytes,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
Check.NotNull(bytes, nameof(bytes)); Check.NotNull(bytes, nameof(bytes));

4
framework/src/Volo.Abp.Imaging.Abstractions/Volo/Abp/Imaging/ImageResizer.cs

@ -31,7 +31,7 @@ public class ImageResizer : IImageResizer, ITransientDependency
public virtual async Task<ImageResizeResult<Stream>> ResizeAsync( public virtual async Task<ImageResizeResult<Stream>> ResizeAsync(
[NotNull] Stream stream, [NotNull] Stream stream,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
Check.NotNull(stream, nameof(stream)); Check.NotNull(stream, nameof(stream));
@ -56,7 +56,7 @@ public class ImageResizer : IImageResizer, ITransientDependency
public virtual async Task<ImageResizeResult<byte[]>> ResizeAsync( public virtual async Task<ImageResizeResult<byte[]>> ResizeAsync(
[NotNull] byte[] bytes, [NotNull] byte[] bytes,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
Check.NotNull(bytes, nameof(bytes)); Check.NotNull(bytes, nameof(bytes));

2
framework/src/Volo.Abp.Imaging.AspNetCore/Volo.Abp.Imaging.AspNetCore.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<PackageId>Volo.Abp.Imaging.AspNetCore</PackageId> <PackageId>Volo.Abp.Imaging.AspNetCore</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>

2
framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/CompressImageAttribute.cs

@ -28,7 +28,7 @@ public class CompressImageAttribute : ActionFilterAttribute
foreach (var (key, value) in parameters) foreach (var (key, value) in parameters)
{ {
object compressedValue = value switch { object? compressedValue = value switch {
IFormFile file => await CompressImageAsync(file, imageCompressor), IFormFile file => await CompressImageAsync(file, imageCompressor),
IRemoteStreamContent remoteStreamContent => await CompressImageAsync(remoteStreamContent, imageCompressor), IRemoteStreamContent remoteStreamContent => await CompressImageAsync(remoteStreamContent, imageCompressor),
Stream stream => await CompressImageAsync(stream, imageCompressor), Stream stream => await CompressImageAsync(stream, imageCompressor),

2
framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/ResizeImageAttribute.cs

@ -41,7 +41,7 @@ public class ResizeImageAttribute : ActionFilterAttribute
foreach (var (key, value) in parameters) foreach (var (key, value) in parameters)
{ {
object resizedValue = value switch { object? resizedValue = value switch {
IFormFile file => await ResizeImageAsync(file, imageResizer), IFormFile file => await ResizeImageAsync(file, imageResizer),
IRemoteStreamContent remoteStreamContent => await ResizeImageAsync(remoteStreamContent, imageResizer), IRemoteStreamContent remoteStreamContent => await ResizeImageAsync(remoteStreamContent, imageResizer),
Stream stream => await ResizeImageAsync(stream, imageResizer), Stream stream => await ResizeImageAsync(stream, imageResizer),

2
framework/src/Volo.Abp.Imaging.ImageSharp/Volo.Abp.Imaging.ImageSharp.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;</TargetFrameworks> <TargetFrameworks>netstandard2.0;</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<PackageId>Volo.Abp.Imaging.ImageSharp</PackageId> <PackageId>Volo.Abp.Imaging.ImageSharp</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>

6
framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs

@ -26,7 +26,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor,
public virtual async Task<ImageCompressResult<Stream>> TryCompressAsync( public virtual async Task<ImageCompressResult<Stream>> TryCompressAsync(
Stream stream, Stream stream,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
if (!string.IsNullOrWhiteSpace(mimeType) && !CanCompress(mimeType)) if (!string.IsNullOrWhiteSpace(mimeType) && !CanCompress(mimeType))
@ -54,7 +54,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor,
public virtual async Task<ImageCompressResult<byte[]>> TryCompressAsync( public virtual async Task<ImageCompressResult<byte[]>> TryCompressAsync(
byte[] bytes, byte[] bytes,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
if (!string.IsNullOrWhiteSpace(mimeType) && !CanCompress(mimeType)) if (!string.IsNullOrWhiteSpace(mimeType) && !CanCompress(mimeType))
@ -75,7 +75,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor,
return new ImageCompressResult<byte[]>(newBytes, result.State); return new ImageCompressResult<byte[]>(newBytes, result.State);
} }
protected virtual bool CanCompress(string mimeType) protected virtual bool CanCompress(string? mimeType)
{ {
return mimeType switch { return mimeType switch {
MimeTypes.Image.Jpeg => true, MimeTypes.Image.Jpeg => true,

6
framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs

@ -16,7 +16,7 @@ public class ImageSharpImageResizerContributor : IImageResizerContributor, ITran
public virtual async Task<ImageResizeResult<Stream>> TryResizeAsync( public virtual async Task<ImageResizeResult<Stream>> TryResizeAsync(
Stream stream, Stream stream,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
if (!string.IsNullOrWhiteSpace(mimeType) && !CanResize(mimeType)) if (!string.IsNullOrWhiteSpace(mimeType) && !CanResize(mimeType))
@ -58,7 +58,7 @@ public class ImageSharpImageResizerContributor : IImageResizerContributor, ITran
public virtual async Task<ImageResizeResult<byte[]>> TryResizeAsync( public virtual async Task<ImageResizeResult<byte[]>> TryResizeAsync(
byte[] bytes, byte[] bytes,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
if (!string.IsNullOrWhiteSpace(mimeType) && !CanResize(mimeType)) if (!string.IsNullOrWhiteSpace(mimeType) && !CanResize(mimeType))
@ -82,7 +82,7 @@ public class ImageSharpImageResizerContributor : IImageResizerContributor, ITran
return new ImageResizeResult<byte[]>(newBytes, result.State); return new ImageResizeResult<byte[]>(newBytes, result.State);
} }
protected virtual bool CanResize(string mimeType) protected virtual bool CanResize(string? mimeType)
{ {
return mimeType switch { return mimeType switch {
MimeTypes.Image.Jpeg => true, MimeTypes.Image.Jpeg => true,

2
framework/src/Volo.Abp.Imaging.MagickNet/Volo.Abp.Imaging.MagickNet.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<PackageId>Volo.Abp.Imaging.MagicNet</PackageId> <PackageId>Volo.Abp.Imaging.MagicNet</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>

6
framework/src/Volo.Abp.Imaging.MagickNet/Volo/Abp/Imaging/MagickImageCompressorContributor.cs

@ -28,7 +28,7 @@ public class MagickImageCompressorContributor : IImageCompressorContributor, ITr
public virtual async Task<ImageCompressResult<Stream>> TryCompressAsync( public virtual async Task<ImageCompressResult<Stream>> TryCompressAsync(
Stream stream, Stream stream,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
if (!string.IsNullOrWhiteSpace(mimeType) && !CanCompress(mimeType)) if (!string.IsNullOrWhiteSpace(mimeType) && !CanCompress(mimeType))
@ -63,7 +63,7 @@ public class MagickImageCompressorContributor : IImageCompressorContributor, ITr
public virtual async Task<ImageCompressResult<byte[]>> TryCompressAsync( public virtual async Task<ImageCompressResult<byte[]>> TryCompressAsync(
byte[] bytes, byte[] bytes,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
if (!string.IsNullOrWhiteSpace(mimeType) && !CanCompress(mimeType)) if (!string.IsNullOrWhiteSpace(mimeType) && !CanCompress(mimeType))
@ -86,7 +86,7 @@ public class MagickImageCompressorContributor : IImageCompressorContributor, ITr
return new ImageCompressResult<byte[]>(newBytes, result.State); return new ImageCompressResult<byte[]>(newBytes, result.State);
} }
protected virtual bool CanCompress(string mimeType) protected virtual bool CanCompress(string? mimeType)
{ {
return mimeType switch { return mimeType switch {
MimeTypes.Image.Jpeg => true, MimeTypes.Image.Jpeg => true,

6
framework/src/Volo.Abp.Imaging.MagickNet/Volo/Abp/Imaging/MagickImageResizerContributor.cs

@ -16,7 +16,7 @@ public class MagickImageResizerContributor : IImageResizerContributor, ITransien
public virtual async Task<ImageResizeResult<Stream>> TryResizeAsync( public virtual async Task<ImageResizeResult<Stream>> TryResizeAsync(
Stream stream, Stream stream,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
if (!mimeType.IsNullOrWhiteSpace() && !CanResize(mimeType)) if (!mimeType.IsNullOrWhiteSpace() && !CanResize(mimeType))
@ -54,7 +54,7 @@ public class MagickImageResizerContributor : IImageResizerContributor, ITransien
public virtual Task<ImageResizeResult<byte[]>> TryResizeAsync( public virtual Task<ImageResizeResult<byte[]>> TryResizeAsync(
byte[] bytes, byte[] bytes,
ImageResizeArgs resizeArgs, ImageResizeArgs resizeArgs,
[CanBeNull] string mimeType = null, string? mimeType = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
if (!mimeType.IsNullOrWhiteSpace() && !CanResize(mimeType)) if (!mimeType.IsNullOrWhiteSpace() && !CanResize(mimeType))
@ -74,7 +74,7 @@ public class MagickImageResizerContributor : IImageResizerContributor, ITransien
return Task.FromResult(new ImageResizeResult<byte[]>(image.ToByteArray(), ImageProcessState.Done)); return Task.FromResult(new ImageResizeResult<byte[]>(image.ToByteArray(), ImageProcessState.Done));
} }
protected virtual bool CanResize(string mimeType) protected virtual bool CanResize(string? mimeType)
{ {
return mimeType switch { return mimeType switch {
MimeTypes.Image.Jpeg => true, MimeTypes.Image.Jpeg => true,

2
framework/src/Volo.Abp.Json/Volo.Abp.Json.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.Json</AssemblyName> <AssemblyName>Volo.Abp.Json</AssemblyName>
<PackageId>Volo.Abp.Json</PackageId> <PackageId>Volo.Abp.Json</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

2
framework/src/Volo.Abp.TextTemplating.Core/Volo.Abp.TextTemplating.Core.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

8
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/AbpTemplateRenderer.cs

@ -25,9 +25,9 @@ public class AbpTemplateRenderer : ITemplateRenderer, ITransientDependency
public virtual async Task<string> RenderAsync( public virtual async Task<string> RenderAsync(
string templateName, string templateName,
object model = null, object? model = null,
string cultureName = null, string? cultureName = null,
Dictionary<string, object> globalContext = null) Dictionary<string, object>? globalContext = null)
{ {
var templateDefinition = await TemplateDefinitionManager.GetAsync(templateName); var templateDefinition = await TemplateDefinitionManager.GetAsync(templateName);
@ -38,7 +38,7 @@ public class AbpTemplateRenderer : ITemplateRenderer, ITransientDependency
renderEngine = Options.DefaultRenderingEngine; renderEngine = Options.DefaultRenderingEngine;
} }
var providerType = Options.RenderingEngines.GetOrDefault(renderEngine); var providerType = Options.RenderingEngines.GetOrDefault(renderEngine!);
if (providerType != null && typeof(ITemplateRenderingEngine).IsAssignableFrom(providerType)) if (providerType != null && typeof(ITemplateRenderingEngine).IsAssignableFrom(providerType))
{ {

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/AbpTextTemplatingOptions.cs

@ -10,7 +10,7 @@ public class AbpTextTemplatingOptions
public ITypeList<ITemplateContentContributor> ContentContributors { get; } public ITypeList<ITemplateContentContributor> ContentContributors { get; }
public IDictionary<string, Type> RenderingEngines { get; } public IDictionary<string, Type> RenderingEngines { get; }
public string DefaultRenderingEngine { get; set; } public string? DefaultRenderingEngine { get; set; }
public HashSet<string> DeletedTemplates { get; } public HashSet<string> DeletedTemplates { get; }

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/IDynamicTemplateDefinitionStore.cs

@ -10,5 +10,5 @@ public interface IDynamicTemplateDefinitionStore
Task<IReadOnlyList<TemplateDefinition>> GetAllAsync(); Task<IReadOnlyList<TemplateDefinition>> GetAllAsync();
Task<TemplateDefinition> GetOrNullAsync(string name); Task<TemplateDefinition?> GetOrNullAsync(string name);
} }

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/IStaticTemplateDefinitionStore.cs

@ -10,5 +10,5 @@ public interface IStaticTemplateDefinitionStore
Task<IReadOnlyList<TemplateDefinition>> GetAllAsync(); Task<IReadOnlyList<TemplateDefinition>> GetAllAsync();
Task<TemplateDefinition> GetOrNullAsync(string name); Task<TemplateDefinition?> GetOrNullAsync(string name);
} }

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateContentContributor.cs

@ -4,5 +4,5 @@ namespace Volo.Abp.TextTemplating;
public interface ITemplateContentContributor public interface ITemplateContentContributor
{ {
Task<string> GetOrNullAsync(TemplateContentContributorContext context); Task<string?> GetOrNullAsync(TemplateContentContributorContext context);
} }

8
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateContentProvider.cs

@ -5,16 +5,16 @@ namespace Volo.Abp.TextTemplating;
public interface ITemplateContentProvider public interface ITemplateContentProvider
{ {
Task<string> GetContentOrNullAsync( Task<string?> GetContentOrNullAsync(
[NotNull] string templateName, [NotNull] string templateName,
[CanBeNull] string cultureName = null, string? cultureName = null,
bool tryDefaults = true, bool tryDefaults = true,
bool useCurrentCultureIfCultureNameIsNull = true bool useCurrentCultureIfCultureNameIsNull = true
); );
Task<string> GetContentOrNullAsync( Task<string?> GetContentOrNullAsync(
[NotNull] TemplateDefinition templateDefinition, [NotNull] TemplateDefinition templateDefinition,
[CanBeNull] string cultureName = null, string? cultureName = null,
bool tryDefaults = true, bool tryDefaults = true,
bool useCurrentCultureIfCultureNameIsNull = true bool useCurrentCultureIfCultureNameIsNull = true
); );

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateDefinitionContext.cs

@ -6,7 +6,7 @@ public interface ITemplateDefinitionContext
{ {
IReadOnlyList<TemplateDefinition> GetAll(); IReadOnlyList<TemplateDefinition> GetAll();
TemplateDefinition GetOrNull(string name); TemplateDefinition? GetOrNull(string name);
void Add(params TemplateDefinition[] definitions); void Add(params TemplateDefinition[] definitions);
} }

3
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateDefinitionManager.cs

@ -12,6 +12,5 @@ public interface ITemplateDefinitionManager
[ItemNotNull] [ItemNotNull]
Task<IReadOnlyList<TemplateDefinition>> GetAllAsync(); Task<IReadOnlyList<TemplateDefinition>> GetAllAsync();
[ItemCanBeNull] Task<TemplateDefinition?> GetOrNullAsync(string name);
Task<TemplateDefinition> GetOrNullAsync(string name);
} }

6
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateRenderer.cs

@ -17,8 +17,8 @@ public interface ITemplateRenderer
/// <returns></returns> /// <returns></returns>
Task<string> RenderAsync( Task<string> RenderAsync(
[NotNull] string templateName, [NotNull] string templateName,
[CanBeNull] object model = null, object? model = null,
[CanBeNull] string cultureName = null, string? cultureName = null,
[CanBeNull] Dictionary<string, object> globalContext = null Dictionary<string, object>? globalContext = null
); );
} }

6
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/ITemplateRenderingEngine.cs

@ -19,8 +19,8 @@ public interface ITemplateRenderingEngine
/// <returns></returns> /// <returns></returns>
Task<string> RenderAsync( Task<string> RenderAsync(
[NotNull] string templateName, [NotNull] string templateName,
[CanBeNull] object model = null, object? model = null,
[CanBeNull] string cultureName = null, string? cultureName = null,
[CanBeNull] Dictionary<string, object> globalContext = null Dictionary<string, object>? globalContext = null
); );
} }

6
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/NullIDynamicTemplateDefinitionStore.cs

@ -8,13 +8,13 @@ namespace Volo.Abp.TextTemplating;
public class NullIDynamicTemplateDefinitionStore : IDynamicTemplateDefinitionStore, ISingletonDependency public class NullIDynamicTemplateDefinitionStore : IDynamicTemplateDefinitionStore, ISingletonDependency
{ {
private readonly static Task<TemplateDefinition> CachedTemplateResult = Task.FromResult((TemplateDefinition)null); private readonly static Task<TemplateDefinition?> CachedTemplateResult = Task.FromResult((TemplateDefinition?)null);
private readonly static Task<IReadOnlyList<TemplateDefinition>> CachedTemplatesResult = Task.FromResult((IReadOnlyList<TemplateDefinition>)Array.Empty<TemplateDefinition>().ToImmutableList()); private readonly static Task<IReadOnlyList<TemplateDefinition>> CachedTemplatesResult = Task.FromResult((IReadOnlyList<TemplateDefinition>)Array.Empty<TemplateDefinition>().ToImmutableList());
public Task<TemplateDefinition> GetAsync(string name) public Task<TemplateDefinition> GetAsync(string name)
{ {
return CachedTemplateResult; return CachedTemplateResult!;
} }
public Task<IReadOnlyList<TemplateDefinition>> GetAllAsync() public Task<IReadOnlyList<TemplateDefinition>> GetAllAsync()
@ -22,7 +22,7 @@ public class NullIDynamicTemplateDefinitionStore : IDynamicTemplateDefinitionSto
return CachedTemplatesResult; return CachedTemplatesResult;
} }
public Task<TemplateDefinition> GetOrNullAsync(string name) public Task<TemplateDefinition?> GetOrNullAsync(string name)
{ {
return CachedTemplateResult; return CachedTemplateResult;
} }

6
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/StaticTemplateDefinitionStore.cs

@ -36,7 +36,7 @@ public class StaticTemplateDefinitionStore : IStaticTemplateDefinitionStore, ISi
throw new AbpException("Undefined template: " + name); throw new AbpException("Undefined template: " + name);
} }
return template; return template!;
} }
public virtual Task<IReadOnlyList<TemplateDefinition>> GetAllAsync() public virtual Task<IReadOnlyList<TemplateDefinition>> GetAllAsync()
@ -44,7 +44,7 @@ public class StaticTemplateDefinitionStore : IStaticTemplateDefinitionStore, ISi
return Task.FromResult<IReadOnlyList<TemplateDefinition>>(TemplateDefinitions.Value.Values.ToImmutableList()); return Task.FromResult<IReadOnlyList<TemplateDefinition>>(TemplateDefinitions.Value.Values.ToImmutableList());
} }
public virtual Task<TemplateDefinition> GetOrNullAsync(string name) public virtual Task<TemplateDefinition?> GetOrNullAsync(string name)
{ {
return Task.FromResult(TemplateDefinitions.Value.GetOrDefault(name)); return Task.FromResult(TemplateDefinitions.Value.GetOrDefault(name));
} }
@ -57,7 +57,7 @@ public class StaticTemplateDefinitionStore : IStaticTemplateDefinitionStore, ISi
{ {
var providers = Options var providers = Options
.DefinitionProviders .DefinitionProviders
.Select(p => scope.ServiceProvider.GetRequiredService(p) as ITemplateDefinitionProvider) .Select(p => (scope.ServiceProvider.GetRequiredService(p) as ITemplateDefinitionProvider)!)
.ToList(); .ToList();
var context = new TemplateDefinitionContext(templates); var context = new TemplateDefinitionContext(templates);

5
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateContentContributorContext.cs

@ -11,13 +11,12 @@ public class TemplateContentContributorContext
[NotNull] [NotNull]
public IServiceProvider ServiceProvider { get; } public IServiceProvider ServiceProvider { get; }
[CanBeNull] public string? Culture { get; }
public string Culture { get; }
public TemplateContentContributorContext( public TemplateContentContributorContext(
[NotNull] TemplateDefinition templateDefinition, [NotNull] TemplateDefinition templateDefinition,
[NotNull] IServiceProvider serviceProvider, [NotNull] IServiceProvider serviceProvider,
[CanBeNull] string culture) string? culture)
{ {
TemplateDefinition = Check.NotNull(templateDefinition, nameof(templateDefinition)); TemplateDefinition = Check.NotNull(templateDefinition, nameof(templateDefinition));
ServiceProvider = Check.NotNull(serviceProvider, nameof(serviceProvider)); ServiceProvider = Check.NotNull(serviceProvider, nameof(serviceProvider));

12
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateContentProvider.cs

@ -26,9 +26,9 @@ public class TemplateContentProvider : ITemplateContentProvider, ITransientDepen
_templateDefinitionManager = templateDefinitionManager; _templateDefinitionManager = templateDefinitionManager;
} }
public virtual async Task<string> GetContentOrNullAsync( public virtual async Task<string?> GetContentOrNullAsync(
[NotNull] string templateName, [NotNull] string templateName,
[CanBeNull] string cultureName = null, string? cultureName = null,
bool tryDefaults = true, bool tryDefaults = true,
bool useCurrentCultureIfCultureNameIsNull = true) bool useCurrentCultureIfCultureNameIsNull = true)
{ {
@ -36,9 +36,9 @@ public class TemplateContentProvider : ITemplateContentProvider, ITransientDepen
return await GetContentOrNullAsync(template, cultureName); return await GetContentOrNullAsync(template, cultureName);
} }
public virtual async Task<string> GetContentOrNullAsync( public virtual async Task<string?> GetContentOrNullAsync(
[NotNull] TemplateDefinition templateDefinition, [NotNull] TemplateDefinition templateDefinition,
[CanBeNull] string cultureName = null, string? cultureName = null,
bool tryDefaults = true, bool tryDefaults = true,
bool useCurrentCultureIfCultureNameIsNull = true) bool useCurrentCultureIfCultureNameIsNull = true)
{ {
@ -53,7 +53,7 @@ public class TemplateContentProvider : ITemplateContentProvider, ITransientDepen
using (var scope = ServiceScopeFactory.CreateScope()) using (var scope = ServiceScopeFactory.CreateScope())
{ {
string templateString = null; string? templateString = null;
if (cultureName == null && useCurrentCultureIfCultureNameIsNull) if (cultureName == null && useCurrentCultureIfCultureNameIsNull)
{ {
@ -151,7 +151,7 @@ public class TemplateContentProvider : ITemplateContentProvider, ITransientDepen
.ToArray(); .ToArray();
} }
protected virtual async Task<string> GetContentOrNullAsync( protected virtual async Task<string?> GetContentOrNullAsync(
ITemplateContentContributor[] contributors, ITemplateContentContributor[] contributors,
TemplateContentContributorContext context) TemplateContentContributorContext context)
{ {

35
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinition.cs

@ -20,23 +20,19 @@ public class TemplateDefinition : IHasNameWithLocalizableDisplayName
_displayName = value; _displayName = value;
} }
} }
private ILocalizableString _displayName; private ILocalizableString _displayName = default!;
public bool IsLayout { get; } public bool IsLayout { get; }
[CanBeNull] public string? Layout { get; set; }
public string Layout { get; set; }
[CanBeNull] public string? LocalizationResourceName { get; set; }
public string LocalizationResourceName { get; set; }
public bool IsInlineLocalized { get; set; } public bool IsInlineLocalized { get; set; }
[CanBeNull] public string? DefaultCultureName { get; }
public string DefaultCultureName { get; }
[CanBeNull] public string? RenderEngine { get; set; }
public string RenderEngine { get; set; }
/// <summary> /// <summary>
/// Gets/sets a key-value on the <see cref="Properties"/>. /// Gets/sets a key-value on the <see cref="Properties"/>.
@ -46,8 +42,7 @@ public class TemplateDefinition : IHasNameWithLocalizableDisplayName
/// Returns the value in the <see cref="Properties"/> dictionary by given <see cref="name"/>. /// Returns the value in the <see cref="Properties"/> dictionary by given <see cref="name"/>.
/// Returns null if given <see cref="name"/> is not present in the <see cref="Properties"/> dictionary. /// Returns null if given <see cref="name"/> is not present in the <see cref="Properties"/> dictionary.
/// </returns> /// </returns>
[CanBeNull] public object? this[string name] {
public object this[string name] {
get => Properties.GetOrDefault(name); get => Properties.GetOrDefault(name);
set => Properties[name] = value; set => Properties[name] = value;
} }
@ -56,15 +51,15 @@ public class TemplateDefinition : IHasNameWithLocalizableDisplayName
/// Can be used to get/set custom properties for this feature. /// Can be used to get/set custom properties for this feature.
/// </summary> /// </summary>
[NotNull] [NotNull]
public Dictionary<string, object> Properties { get; } public Dictionary<string, object?> Properties { get; }
public TemplateDefinition( public TemplateDefinition(
[NotNull] string name, [NotNull] string name,
[NotNull] Type localizationResource, [NotNull] Type localizationResource,
[CanBeNull] ILocalizableString displayName = null, ILocalizableString? displayName = null,
bool isLayout = false, bool isLayout = false,
string layout = null, string? layout = null,
string defaultCultureName = null) string? defaultCultureName = null)
: this(name, LocalizationResourceNameAttribute.GetName(localizationResource), displayName, isLayout, layout, defaultCultureName) : this(name, LocalizationResourceNameAttribute.GetName(localizationResource), displayName, isLayout, layout, defaultCultureName)
{ {
@ -72,11 +67,11 @@ public class TemplateDefinition : IHasNameWithLocalizableDisplayName
public TemplateDefinition( public TemplateDefinition(
[NotNull] string name, [NotNull] string name,
[CanBeNull] string localizationResourceName = null, string? localizationResourceName = null,
[CanBeNull] ILocalizableString displayName = null, ILocalizableString? displayName = null,
bool isLayout = false, bool isLayout = false,
string layout = null, string? layout = null,
string defaultCultureName = null) string? defaultCultureName = null)
{ {
Name = Check.NotNullOrWhiteSpace(name, nameof(name), MaxNameLength); Name = Check.NotNullOrWhiteSpace(name, nameof(name), MaxNameLength);
LocalizationResourceName = localizationResourceName; LocalizationResourceName = localizationResourceName;
@ -84,7 +79,7 @@ public class TemplateDefinition : IHasNameWithLocalizableDisplayName
IsLayout = isLayout; IsLayout = isLayout;
Layout = layout; Layout = layout;
DefaultCultureName = defaultCultureName; DefaultCultureName = defaultCultureName;
Properties = new Dictionary<string, object>(); Properties = new Dictionary<string, object?>();
} }
/// <summary> /// <summary>

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionContext.cs

@ -17,7 +17,7 @@ public class TemplateDefinitionContext : ITemplateDefinitionContext
return Templates.Values.ToImmutableList(); return Templates.Values.ToImmutableList();
} }
public virtual TemplateDefinition GetOrNull(string name) public virtual TemplateDefinition? GetOrNull(string name)
{ {
return Templates.GetOrDefault(name); return Templates.GetOrDefault(name);
} }

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionExtensions.cs

@ -21,7 +21,7 @@ public static class TemplateDefinitionExtensions
); );
} }
public static string GetVirtualFilePathOrNull( public static string? GetVirtualFilePathOrNull(
[NotNull] this TemplateDefinition templateDefinition) [NotNull] this TemplateDefinition templateDefinition)
{ {
Check.NotNull(templateDefinition, nameof(templateDefinition)); Check.NotNull(templateDefinition, nameof(templateDefinition));

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs

@ -28,7 +28,7 @@ public class TemplateDefinitionManager : ITemplateDefinitionManager, ISingletonD
return permission; return permission;
} }
public virtual async Task<TemplateDefinition> GetOrNullAsync(string name) public virtual async Task<TemplateDefinition?> GetOrNullAsync(string name)
{ {
Check.NotNull(name, nameof(name)); Check.NotNull(name, nameof(name));

6
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateRenderingEngineBase.cs

@ -22,14 +22,14 @@ public abstract class TemplateRenderingEngineBase : ITemplateRenderingEngine
StringLocalizerFactory = stringLocalizerFactory; StringLocalizerFactory = stringLocalizerFactory;
} }
public abstract Task<string> RenderAsync(string templateName, object model = null, string cultureName = null, Dictionary<string, object> globalContext = null); public abstract Task<string> RenderAsync(string templateName, object? model = null, string? cultureName = null, Dictionary<string, object>? globalContext = null);
protected virtual async Task<string> GetContentOrNullAsync(TemplateDefinition templateDefinition) protected virtual async Task<string?> GetContentOrNullAsync(TemplateDefinition templateDefinition)
{ {
return await TemplateContentProvider.GetContentOrNullAsync(templateDefinition); return await TemplateContentProvider.GetContentOrNullAsync(templateDefinition);
} }
protected virtual IStringLocalizer GetLocalizerOrNull(TemplateDefinition templateDefinition) protected virtual IStringLocalizer? GetLocalizerOrNull(TemplateDefinition templateDefinition)
{ {
if (templateDefinition.LocalizationResourceName != null) if (templateDefinition.LocalizationResourceName != null)
{ {

6
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/FileInfoLocalizedTemplateContentReader.cs

@ -5,8 +5,8 @@ namespace Volo.Abp.TextTemplating.VirtualFiles;
public class FileInfoLocalizedTemplateContentReader : ILocalizedTemplateContentReader public class FileInfoLocalizedTemplateContentReader : ILocalizedTemplateContentReader
{ {
private IFileInfo _fileInfo; private IFileInfo _fileInfo = default!;
private string _content; private string _content = default!;
public async Task ReadContentsAsync(IFileInfo fileInfo) public async Task ReadContentsAsync(IFileInfo fileInfo)
{ {
@ -14,7 +14,7 @@ public class FileInfoLocalizedTemplateContentReader : ILocalizedTemplateContentR
_content = await fileInfo.ReadAsStringAsync(); _content = await fileInfo.ReadAsStringAsync();
} }
public string GetContentOrNull(string culture) public string? GetContentOrNull(string? culture)
{ {
if (culture == null) if (culture == null)
{ {

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/ILocalizedTemplateContentReader.cs

@ -4,5 +4,5 @@ namespace Volo.Abp.TextTemplating.VirtualFiles;
public interface ILocalizedTemplateContentReader public interface ILocalizedTemplateContentReader
{ {
public string GetContentOrNull([CanBeNull] string culture); public string? GetContentOrNull(string? culture);
} }

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/NullLocalizedTemplateContentReader.cs

@ -9,7 +9,7 @@ public class NullLocalizedTemplateContentReader : ILocalizedTemplateContentReade
} }
public string GetContentOrNull(string culture) public string? GetContentOrNull(string? culture)
{ {
return null; return null;
} }

4
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/TemplateContentFileInfo.cs

@ -2,7 +2,7 @@ namespace Volo.Abp.TextTemplating.VirtualFiles;
public class TemplateContentFileInfo public class TemplateContentFileInfo
{ {
public string FileName { get; set; } public string FileName { get; set; } = default!;
public string FileContent { get; set; } public string FileContent { get; set; } = default!;
} }

2
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/VirtualFileTemplateContentContributor.cs

@ -15,7 +15,7 @@ public class VirtualFileTemplateContentContributor : ITemplateContentContributor
_localizedTemplateContentReaderFactory = localizedTemplateContentReaderFactory; _localizedTemplateContentReaderFactory = localizedTemplateContentReaderFactory;
} }
public virtual async Task<string> GetOrNullAsync(TemplateContentContributorContext context) public virtual async Task<string?> GetOrNullAsync(TemplateContentContributorContext context)
{ {
var localizedReader = await _localizedTemplateContentReaderFactory var localizedReader = await _localizedTemplateContentReaderFactory
.CreateAsync(context.TemplateDefinition); .CreateAsync(context.TemplateDefinition);

4
framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/VirtualFiles/VirtualFolderLocalizedTemplateContentReader.cs

@ -9,7 +9,7 @@ namespace Volo.Abp.TextTemplating.VirtualFiles;
public class VirtualFolderLocalizedTemplateContentReader : ILocalizedTemplateContentReader public class VirtualFolderLocalizedTemplateContentReader : ILocalizedTemplateContentReader
{ {
private Dictionary<string, TemplateContentFileInfo> _dictionary; private Dictionary<string, TemplateContentFileInfo> _dictionary = default!;
private readonly string[] _fileExtension; private readonly string[] _fileExtension;
public VirtualFolderLocalizedTemplateContentReader(string[] fileExtension) public VirtualFolderLocalizedTemplateContentReader(string[] fileExtension)
@ -44,7 +44,7 @@ public class VirtualFolderLocalizedTemplateContentReader : ILocalizedTemplateCon
} }
} }
public string GetContentOrNull(string cultureName) public string? GetContentOrNull(string? cultureName)
{ {
if (cultureName == null) if (cultureName == null)
{ {

2
framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

2
framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/AbpRazorTemplateCSharpCompiler.cs

@ -40,7 +40,7 @@ public class AbpRazorTemplateCSharpCompiler : ISingletonDependency
.Select(x => MetadataReference.CreateFromFile(x.Location)) .Select(x => MetadataReference.CreateFromFile(x.Location))
.ToImmutableList(); .ToImmutableList();
public virtual Stream CreateAssembly(string code, string assemblyName, List<MetadataReference> references = null, CSharpCompilationOptions options = null) public virtual Stream CreateAssembly(string code, string assemblyName, List<MetadataReference>? references = null, CSharpCompilationOptions? options = null)
{ {
var defaultReferences = DefaultReferences.Concat(Options.References); var defaultReferences = DefaultReferences.Concat(Options.References);
try try

2
framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/DefaultAbpRazorProjectEngineFactory.cs

@ -7,7 +7,7 @@ namespace Volo.Abp.TextTemplating.Razor;
public class DefaultAbpRazorProjectEngineFactory : IAbpRazorProjectEngineFactory, ITransientDependency public class DefaultAbpRazorProjectEngineFactory : IAbpRazorProjectEngineFactory, ITransientDependency
{ {
public virtual async Task<RazorProjectEngine> CreateAsync(Action<RazorProjectEngineBuilder> configure = null) public virtual async Task<RazorProjectEngine> CreateAsync(Action<RazorProjectEngineBuilder>? configure = null)
{ {
return RazorProjectEngine.Create(await CreateRazorConfigurationAsync(), EmptyProjectFileSystem.Empty, configure); return RazorProjectEngine.Create(await CreateRazorConfigurationAsync(), EmptyProjectFileSystem.Empty, configure);
} }

2
framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/EmptyProjectFileSystem.cs

@ -21,7 +21,7 @@ internal class EmptyProjectFileSystem : RazorProjectFileSystem
return GetItem(path, fileKind: null); return GetItem(path, fileKind: null);
} }
public override RazorProjectItem GetItem(string path, string fileKind) public override RazorProjectItem GetItem(string path, string? fileKind)
{ {
NormalizeAndEnsureValidPath(path); NormalizeAndEnsureValidPath(path);
return new NotFoundProjectItem(string.Empty, path, fileKind); return new NotFoundProjectItem(string.Empty, path, fileKind);

2
framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/IAbpRazorProjectEngineFactory.cs

@ -6,5 +6,5 @@ namespace Volo.Abp.TextTemplating.Razor;
public interface IAbpRazorProjectEngineFactory public interface IAbpRazorProjectEngineFactory
{ {
Task<RazorProjectEngine> CreateAsync(Action<RazorProjectEngineBuilder> configure = null); Task<RazorProjectEngine> CreateAsync(Action<RazorProjectEngineBuilder>? configure = null);
} }

12
framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/IRazorTemplatePage.cs

@ -8,24 +8,24 @@ namespace Volo.Abp.TextTemplating.Razor;
public interface IRazorTemplatePage<TModel> : IRazorTemplatePage public interface IRazorTemplatePage<TModel> : IRazorTemplatePage
{ {
TModel Model { get; set; } TModel? Model { get; set; }
} }
public interface IRazorTemplatePage public interface IRazorTemplatePage
{ {
IServiceProvider ServiceProvider { get; set; } IServiceProvider ServiceProvider { get; set; }
IStringLocalizer Localizer { get; set; } IStringLocalizer? Localizer { get; set; }
HtmlEncoder HtmlEncoder { get; set; } HtmlEncoder? HtmlEncoder { get; set; }
JavaScriptEncoder JavaScriptEncoder { get; set; } JavaScriptEncoder? JavaScriptEncoder { get; set; }
UrlEncoder UrlEncoder { get; set; } UrlEncoder? UrlEncoder { get; set; }
Dictionary<string, object> GlobalContext { get; set; } Dictionary<string, object> GlobalContext { get; set; }
string Body { get; set; } string? Body { get; set; }
Task ExecuteAsync(); Task ExecuteAsync();

2
framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/NotFoundProjectItem.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.TextTemplating.Razor;
internal class NotFoundProjectItem : RazorProjectItem internal class NotFoundProjectItem : RazorProjectItem
{ {
public NotFoundProjectItem(string basePath, string path, string fileKind) public NotFoundProjectItem(string basePath, string path, string? fileKind)
{ {
BasePath = basePath; BasePath = basePath;
FilePath = path; FilePath = path;

20
framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/RazorTemplatePageBase.cs

@ -9,30 +9,30 @@ namespace Volo.Abp.TextTemplating.Razor;
public abstract class RazorTemplatePageBase<TModel> : RazorTemplatePageBase, IRazorTemplatePage<TModel> public abstract class RazorTemplatePageBase<TModel> : RazorTemplatePageBase, IRazorTemplatePage<TModel>
{ {
public TModel Model { get; set; } public TModel? Model { get; set; }
} }
public abstract class RazorTemplatePageBase : IRazorTemplatePage public abstract class RazorTemplatePageBase : IRazorTemplatePage
{ {
public Dictionary<string, object> GlobalContext { get; set; } public Dictionary<string, object> GlobalContext { get; set; } = default!;
public IServiceProvider ServiceProvider { get; set; } public IServiceProvider ServiceProvider { get; set; } = default!;
public IStringLocalizer Localizer { get; set; } public IStringLocalizer? Localizer { get; set; }
public HtmlEncoder HtmlEncoder { get; set; } public HtmlEncoder? HtmlEncoder { get; set; }
public JavaScriptEncoder JavaScriptEncoder { get; set; } public JavaScriptEncoder? JavaScriptEncoder { get; set; }
public UrlEncoder UrlEncoder { get; set; } public UrlEncoder? UrlEncoder { get; set; }
public string Body { get; set; } public string? Body { get; set; }
private readonly StringBuilder _stringBuilder = new StringBuilder(); private readonly StringBuilder _stringBuilder = new StringBuilder();
private AttributeInfo _attributeInfo; private AttributeInfo _attributeInfo;
public virtual void WriteLiteral(string literal = null) public virtual void WriteLiteral(string? literal = null)
{ {
if (!literal.IsNullOrEmpty()) if (!literal.IsNullOrEmpty())
{ {
@ -40,7 +40,7 @@ public abstract class RazorTemplatePageBase : IRazorTemplatePage
} }
} }
public virtual void Write(object value = null) public virtual void Write(object? value = null)
{ {
if (value is null) if (value is null)
{ {

26
framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/RazorTemplateRenderingEngine.cs

@ -34,9 +34,9 @@ public class RazorTemplateRenderingEngine : TemplateRenderingEngineBase, ITransi
public override async Task<string> RenderAsync( public override async Task<string> RenderAsync(
[NotNull] string templateName, [NotNull] string templateName,
[CanBeNull] object model = null, object? model = null,
[CanBeNull] string cultureName = null, string? cultureName = null,
[CanBeNull] Dictionary<string, object> globalContext = null) Dictionary<string, object>? globalContext = null)
{ {
Check.NotNullOrWhiteSpace(templateName, nameof(templateName)); Check.NotNullOrWhiteSpace(templateName, nameof(templateName));
@ -70,9 +70,9 @@ public class RazorTemplateRenderingEngine : TemplateRenderingEngineBase, ITransi
protected virtual async Task<string> RenderInternalAsync( protected virtual async Task<string> RenderInternalAsync(
string templateName, string templateName,
string body, string? body,
Dictionary<string, object> globalContext, Dictionary<string, object> globalContext,
object model = null) object? model = null)
{ {
var templateDefinition = await TemplateDefinitionManager.GetAsync(templateName); var templateDefinition = await TemplateDefinitionManager.GetAsync(templateName);
@ -97,9 +97,9 @@ public class RazorTemplateRenderingEngine : TemplateRenderingEngineBase, ITransi
protected virtual async Task<string> RenderSingleTemplateAsync( protected virtual async Task<string> RenderSingleTemplateAsync(
TemplateDefinition templateDefinition, TemplateDefinition templateDefinition,
string body, string? body,
Dictionary<string, object> globalContext, Dictionary<string, object> globalContext,
object model = null) object? model = null)
{ {
return await RenderTemplateContentWithRazorAsync( return await RenderTemplateContentWithRazorAsync(
templateDefinition, templateDefinition,
@ -111,13 +111,13 @@ public class RazorTemplateRenderingEngine : TemplateRenderingEngineBase, ITransi
protected virtual async Task<string> RenderTemplateContentWithRazorAsync( protected virtual async Task<string> RenderTemplateContentWithRazorAsync(
TemplateDefinition templateDefinition, TemplateDefinition templateDefinition,
string body, string? body,
Dictionary<string, object> globalContext, Dictionary<string, object> globalContext,
object model = null) object? model = null)
{ {
var assembly = await AbpCompiledViewProvider.GetAssemblyAsync(templateDefinition); var assembly = await AbpCompiledViewProvider.GetAssemblyAsync(templateDefinition);
var templateType = assembly.GetType(AbpRazorTemplateConsts.TypeName); var templateType = assembly.GetType(AbpRazorTemplateConsts.TypeName)!;
var template = (IRazorTemplatePage)Activator.CreateInstance(templateType); var template = (IRazorTemplatePage)Activator.CreateInstance(templateType)!;
using (var scope = ServiceScopeFactory.CreateScope()) using (var scope = ServiceScopeFactory.CreateScope())
{ {
@ -147,11 +147,11 @@ public class RazorTemplateRenderingEngine : TemplateRenderingEngineBase, ITransi
} }
} }
private void SetModel<TModel>(IRazorTemplatePage razorTemplatePage, object model = null) private void SetModel<TModel>(IRazorTemplatePage razorTemplatePage, object? model = null)
{ {
if (razorTemplatePage is IRazorTemplatePage<TModel> razorTemplatePageWithModel) if (razorTemplatePage is IRazorTemplatePage<TModel> razorTemplatePageWithModel)
{ {
razorTemplatePageWithModel.Model = (TModel)model; razorTemplatePageWithModel.Model = (TModel?)model;
} }
} }
} }

2
framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

2
framework/src/Volo.Abp.TextTemplating.Scriban/Volo/Abp/TextTemplating/Scriban/ScribanTemplateLocalizer.cs

@ -44,7 +44,7 @@ public class ScribanTemplateLocalizer : IScriptCustomFunction
} }
var args = arguments.Skip(1).Where(x => x != null && !x.ToString().IsNullOrWhiteSpace()).ToArray(); var args = arguments.Skip(1).Where(x => x != null && !x.ToString().IsNullOrWhiteSpace()).ToArray();
return args.Any() ? _localizer[name.ToString(), args] : _localizer[name.ToString()]; return args.Any() ? _localizer[name.ToString()!, args] : _localizer[name.ToString()!];
} }
public int RequiredParameterCount => 1; public int RequiredParameterCount => 1;

16
framework/src/Volo.Abp.TextTemplating.Scriban/Volo/Abp/TextTemplating/Scriban/ScribanTemplateRenderingEngine.cs

@ -24,9 +24,9 @@ public class ScribanTemplateRenderingEngine : TemplateRenderingEngineBase, ITran
public override async Task<string> RenderAsync( public override async Task<string> RenderAsync(
[NotNull] string templateName, [NotNull] string templateName,
[CanBeNull] object model = null, object? model = null,
[CanBeNull] string cultureName = null, string? cultureName = null,
[CanBeNull] Dictionary<string, object> globalContext = null) Dictionary<string, object>? globalContext = null)
{ {
Check.NotNullOrWhiteSpace(templateName, nameof(templateName)); Check.NotNullOrWhiteSpace(templateName, nameof(templateName));
@ -59,7 +59,7 @@ public class ScribanTemplateRenderingEngine : TemplateRenderingEngineBase, ITran
protected virtual async Task<string> RenderInternalAsync( protected virtual async Task<string> RenderInternalAsync(
string templateName, string templateName,
Dictionary<string, object> globalContext, Dictionary<string, object> globalContext,
object model = null) object? model = null)
{ {
var templateDefinition = await TemplateDefinitionManager.GetAsync(templateName); var templateDefinition = await TemplateDefinitionManager.GetAsync(templateName);
@ -84,13 +84,13 @@ public class ScribanTemplateRenderingEngine : TemplateRenderingEngineBase, ITran
protected virtual async Task<string> RenderSingleTemplateAsync( protected virtual async Task<string> RenderSingleTemplateAsync(
TemplateDefinition templateDefinition, TemplateDefinition templateDefinition,
Dictionary<string, object> globalContext, Dictionary<string, object> globalContext,
object model = null) object? model = null)
{ {
var rawTemplateContent = await GetContentOrNullAsync(templateDefinition); var rawTemplateContent = await GetContentOrNullAsync(templateDefinition);
return await RenderTemplateContentWithScribanAsync( return await RenderTemplateContentWithScribanAsync(
templateDefinition, templateDefinition,
rawTemplateContent, rawTemplateContent!,
globalContext, globalContext,
model model
); );
@ -100,7 +100,7 @@ public class ScribanTemplateRenderingEngine : TemplateRenderingEngineBase, ITran
TemplateDefinition templateDefinition, TemplateDefinition templateDefinition,
string templateContent, string templateContent,
Dictionary<string, object> globalContext, Dictionary<string, object> globalContext,
object model = null) object? model = null)
{ {
var context = CreateScribanTemplateContext( var context = CreateScribanTemplateContext(
templateDefinition, templateDefinition,
@ -116,7 +116,7 @@ public class ScribanTemplateRenderingEngine : TemplateRenderingEngineBase, ITran
protected virtual TemplateContext CreateScribanTemplateContext( protected virtual TemplateContext CreateScribanTemplateContext(
TemplateDefinition templateDefinition, TemplateDefinition templateDefinition,
Dictionary<string, object> globalContext, Dictionary<string, object> globalContext,
object model = null) object? model = null)
{ {
var context = new TemplateContext(); var context = new TemplateContext();

2
framework/src/Volo.Abp.TextTemplating/Volo.Abp.TextTemplating.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

Loading…
Cancel
Save