This commit is contained in:
Eugene Sadovoi 2018-12-30 13:29:20 -05:00
Родитель 42b60bb410
Коммит 9d014836f1
3 изменённых файлов: 23 добавлений и 18 удалений

Просмотреть файл

@ -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>