Minor optimization
This commit is contained in:
Родитель
42b60bb410
Коммит
9d014836f1
|
@ -1,12 +1,15 @@
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
using Unity.Builder;
|
using Unity.Builder;
|
||||||
using Unity.Extension;
|
using Unity.Extension;
|
||||||
using Unity.Policy;
|
using Unity.Policy;
|
||||||
|
using System.Security;
|
||||||
|
|
||||||
namespace Unity.Microsoft.Logging
|
namespace Unity.Microsoft.Logging
|
||||||
{
|
{
|
||||||
|
[SecuritySafeCritical]
|
||||||
public class LoggingExtension : UnityContainerExtension
|
public class LoggingExtension : UnityContainerExtension
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
@ -54,29 +57,26 @@ namespace Unity.Microsoft.Logging
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region IBuildPlanPolicy
|
|
||||||
|
|
||||||
|
|
||||||
public void BuildUp(ref BuilderContext context)
|
|
||||||
{
|
|
||||||
context.Existing = null == context.DeclaringType
|
|
||||||
? LoggerFactory.CreateLogger(context.Name ?? string.Empty)
|
|
||||||
: LoggerFactory.CreateLogger(context.DeclaringType);
|
|
||||||
context.BuildComplete = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region IResolveDelegateFactory
|
#region IResolveDelegateFactory
|
||||||
|
|
||||||
public ResolveDelegate<BuilderContext> GetResolver(ref BuilderContext context)
|
public ResolveDelegate<BuilderContext> GetResolver(ref BuilderContext context)
|
||||||
{
|
{
|
||||||
return ((ref BuilderContext c) =>
|
return ((ref BuilderContext c) =>
|
||||||
{
|
{
|
||||||
return null == c.DeclaringType
|
Type declaringType = null;
|
||||||
|
|
||||||
|
if (IntPtr.Zero != c.Parent)
|
||||||
|
{
|
||||||
|
unsafe
|
||||||
|
{
|
||||||
|
var parenContext = Unsafe.AsRef<BuilderContext>(c.Parent.ToPointer());
|
||||||
|
declaringType = parenContext.RegistrationType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null == declaringType
|
||||||
? LoggerFactory.CreateLogger(c.Name ?? string.Empty)
|
? LoggerFactory.CreateLogger(c.Name ?? string.Empty)
|
||||||
: LoggerFactory.CreateLogger(c.DeclaringType);
|
: LoggerFactory.CreateLogger(declaringType);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Security;
|
using System.Security;
|
||||||
|
|
||||||
//[assembly:CLSCompliant(true)]
|
[assembly:CLSCompliant(true)]
|
||||||
//[assembly:SecurityTransparent]
|
[assembly: AllowPartiallyTrustedCallers]
|
||||||
|
|
|
@ -38,6 +38,11 @@
|
||||||
<UnityContainer>..\..\Container\src\Unity.Container.csproj</UnityContainer>
|
<UnityContainer>..\..\Container\src\Unity.Container.csproj</UnityContainer>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup Condition="Exists('$(UnityContainer)')">
|
<ItemGroup Condition="Exists('$(UnityContainer)')">
|
||||||
<ProjectReference Include="$(UnityContainer)" />
|
<ProjectReference Include="$(UnityContainer)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче