Skip to content

Commit e4f425e

Browse files
authored
Merge pull request #56 from bing-framework/dev_3.1
publish: 2.2.1
2 parents 8096f49 + 1455a05 commit e4f425e

File tree

9 files changed

+56
-16
lines changed

9 files changed

+56
-16
lines changed

framework/src/Bing.AspNetCore/Bing/AspNetCore/Tracing/AspNetCoreCorrelationIdProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace Bing.AspNetCore.Tracing
1212
/// AspNetCore 跟踪关联ID提供程序
1313
/// </summary>
1414
[Dependency(ServiceLifetime.Transient, ReplaceExisting = true)]
15-
public class AspNetCoreCorrelationIdProvider : ICorrelationIdProvider, ITransientDependency
15+
public class AspNetCoreCorrelationIdProvider : ICorrelationIdProvider
1616
{
1717
/// <summary>
1818
/// Http上下文访问器

framework/src/Bing.AspNetCore/Bing/AspNetCore/Tracing/BingCorrelationIdMiddleware.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ public async Task InvokeAsync(HttpContext context)
4848
TraceIdContext.Current ??= new TraceIdContext(correlationId);
4949
try
5050
{
51+
// TODO: 由于可能存在某个中间件设置了Response导致当前中间件无法设置
52+
CheckAndSetCorrelationIdOnResponse(context, _options, correlationId);
5153
await _next(context);
5254
}
5355
finally

framework/src/Bing.Auditing/Bing/Auditing/CreationAuditedInitializer.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,24 @@ public sealed class CreationAuditedInitializer
2323
/// </summary>
2424
private readonly string _userName;
2525

26+
/// <summary>
27+
/// 操作时间
28+
/// </summary>
29+
private readonly DateTime? _dateTime;
30+
2631
/// <summary>
2732
/// 初始化一个<see cref="CreationAuditedInitializer"/>类型的实例
2833
/// </summary>
2934
/// <param name="entity">实体</param>
3035
/// <param name="userId">用户标识</param>
3136
/// <param name="userName">用户名称</param>
32-
private CreationAuditedInitializer(object entity, string userId, string userName)
37+
/// <param name="dateTime">操作时间</param>
38+
private CreationAuditedInitializer(object entity, string userId, string userName, DateTime? dateTime)
3339
{
3440
_entity = entity;
3541
_userId = userId;
3642
_userName = userName;
43+
_dateTime = dateTime;
3744
}
3845

3946
/// <summary>
@@ -42,7 +49,16 @@ private CreationAuditedInitializer(object entity, string userId, string userName
4249
/// <param name="entity">实体</param>
4350
/// <param name="userId">用户标识</param>
4451
/// <param name="userName">用户名称</param>
45-
public static void Init(object entity, string userId, string userName) => new CreationAuditedInitializer(entity, userId, userName).Init();
52+
public static void Init(object entity, string userId, string userName) => new CreationAuditedInitializer(entity, userId, userName, null).Init();
53+
54+
/// <summary>
55+
/// 初始化
56+
/// </summary>
57+
/// <param name="entity">实体</param>
58+
/// <param name="userId">用户标识</param>
59+
/// <param name="userName">用户名称</param>
60+
/// <param name="dateTime">操作时间</param>
61+
public static void Init(object entity, string userId, string userName, DateTime? dateTime) => new CreationAuditedInitializer(entity, userId, userName,dateTime).Init();
4662

4763
/// <summary>
4864
/// 初始化
@@ -62,7 +78,7 @@ public void Init()
6278
private void InitCreationTime()
6379
{
6480
if (_entity is IHasCreationTime result)
65-
result.CreationTime = DateTime.Now;
81+
result.CreationTime = _dateTime.HasValue ? _dateTime.SafeValue() : DateTime.Now;
6682
}
6783

6884
/// <summary>

framework/src/Bing.Auditing/Bing/Auditing/ModificationAuditedInitializer.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,24 @@ public sealed class ModificationAuditedInitializer
2323
/// </summary>
2424
private readonly string _userName;
2525

26+
/// <summary>
27+
/// 操作时间
28+
/// </summary>
29+
private readonly DateTime? _dateTime;
30+
2631
/// <summary>
2732
/// 初始化一个<see cref="ModificationAuditedInitializer"/>类型的实例
2833
/// </summary>
2934
/// <param name="entity">实体</param>
3035
/// <param name="userId">用户标识</param>
3136
/// <param name="userName">用户名称</param>
32-
private ModificationAuditedInitializer(object entity, string userId, string userName)
37+
/// <param name="dateTime">操作时间</param>
38+
private ModificationAuditedInitializer(object entity, string userId, string userName, DateTime? dateTime)
3339
{
3440
_entity = entity;
3541
_userId = userId;
3642
_userName = userName;
43+
_dateTime = dateTime;
3744
}
3845

3946
/// <summary>
@@ -42,7 +49,16 @@ private ModificationAuditedInitializer(object entity, string userId, string user
4249
/// <param name="entity">实体</param>
4350
/// <param name="userId">用户标识</param>
4451
/// <param name="userName">用户名称</param>
45-
public static void Init(object entity, string userId, string userName) => new ModificationAuditedInitializer(entity, userId, userName).Init();
52+
public static void Init(object entity, string userId, string userName) => new ModificationAuditedInitializer(entity, userId, userName, null).Init();
53+
54+
/// <summary>
55+
/// 初始化
56+
/// </summary>
57+
/// <param name="entity">实体</param>
58+
/// <param name="userId">用户标识</param>
59+
/// <param name="userName">用户名称</param>
60+
/// <param name="dateTime">操作时间</param>
61+
public static void Init(object entity, string userId, string userName, DateTime? dateTime) => new ModificationAuditedInitializer(entity, userId, userName, dateTime).Init();
4662

4763
/// <summary>
4864
/// 初始化
@@ -62,7 +78,7 @@ public void Init()
6278
private void InitLastModificationTime()
6379
{
6480
if (_entity is IHasModificationTime result)
65-
result.LastModificationTime = DateTime.Now;
81+
result.LastModificationTime = _dateTime.HasValue ? _dateTime.SafeValue() : DateTime.Now;
6682
}
6783

6884
/// <summary>

framework/src/Bing/Bing/Core/Modularity/DependsOnModuleAttribute.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ public class DependsOnModuleAttribute : Attribute
1717
/// 初始化一个<see cref="DependsOnModuleAttribute"/>类型的实例
1818
/// </summary>
1919
/// <param name="dependedModuleTypes">依赖模块类型集合</param>
20-
public DependsOnModuleAttribute(params Type[] dependedModuleTypes) => DependedModuleTypes = dependedModuleTypes;
20+
public DependsOnModuleAttribute(params Type[] dependedModuleTypes) => DependedModuleTypes = dependedModuleTypes ?? new Type[0];
2121
}
2222
}

framework/src/Bing/Bing/DependencyInjection/DependencyModule.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,11 @@ protected virtual void AddToServices(IServiceCollection services, Type implement
6565
{
6666
if (implementationType.IsAbstract || implementationType.IsInterface)
6767
return;
68+
6869
var lifetime = GetLifetimeOrNull(implementationType);
6970
if (lifetime == null)
7071
return;
72+
7173
var dependencyAttribute = implementationType.GetAttribute<DependencyAttribute>();
7274
var serviceTypes = GetImplementedInterfaces(implementationType);
7375

framework/src/Bing/Bing/DependencyInjection/DependencyTypeFinder.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@ public class DependencyTypeFinder : FinderBase<Type>, IDependencyTypeFinder
2727
/// </summary>
2828
protected override Type[] FindAllItems()
2929
{
30-
var baseTypes = new[]
31-
{typeof(ISingletonDependency), typeof(IScopedDependency), typeof(ITransientDependency)};
32-
var types = _allAssemblyFinder.FindAll(true).SelectMany(assembly => assembly.GetTypes().Where(type =>
33-
type.IsClass && !type.IsAbstract && !type.IsInterface &&
34-
!type.HasAttribute<IgnoreDependencyAttribute>() &&
35-
(baseTypes.Any(b => b.IsAssignableFrom(type)) || type.HasAttribute<DependencyAttribute>()))).ToArray();
30+
var baseTypes = new[] {typeof(ISingletonDependency), typeof(IScopedDependency), typeof(ITransientDependency)};
31+
var types = _allAssemblyFinder.FindAll(true)
32+
.SelectMany(assembly => assembly
33+
.GetTypes()
34+
.Where(type => type.IsClass && !type.IsAbstract && !type.IsInterface
35+
&& !type.HasAttribute<IgnoreDependencyAttribute>()
36+
&& (baseTypes.Any(b => b.IsAssignableFrom(type)) || type.HasAttribute<DependencyAttribute>())))
37+
.ToArray();
3638
return types;
3739
}
3840
}

framework/src/Bing/Bing/Tracing/DefaultCorrelationIdProvider.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
using System;
22
using Bing.DependencyInjection;
3+
using Microsoft.Extensions.DependencyInjection;
34

45
namespace Bing.Tracing
56
{
67
/// <summary>
78
/// 默认跟踪标识提供程序
89
/// </summary>
9-
internal class DefaultCorrelationIdProvider : ICorrelationIdProvider, ISingletonDependency
10+
[Dependency(ServiceLifetime.Singleton, TryAdd = true)]
11+
public class DefaultCorrelationIdProvider : ICorrelationIdProvider
1012
{
1113
/// <summary>
1214
/// 跟踪标识提供程序

version.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<VersionMajor>2</VersionMajor>
44
<VersionMinor>2</VersionMinor>
5-
<VersionPatch>0</VersionPatch>
5+
<VersionPatch>1</VersionPatch>
66
<VersionQuality>20220104-1</VersionQuality>
77
<VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionPatch)</VersionPrefix>
88
<!--<VersionSuffix>preview-$(VersionQuality)</VersionSuffix>-->

0 commit comments

Comments
 (0)