Skip to content

Commit 8b28318

Browse files
committed
resolved #79
1 parent c36e958 commit 8b28318

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

src/CatLib.Core/CatLib/App.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -598,9 +598,9 @@ public static Func<object> Factory(string service)
598598
/// </summary>
599599
/// <typeparam name="TService">服务名或别名</typeparam>
600600
/// <param name="closure">闭包</param>
601-
public static void Extend<TService>(Func<object, IContainer, object> closure)
601+
public static void Extend<TService>(Func<TService, IContainer, object> closure)
602602
{
603-
Handler.Extend<TService>(closure);
603+
Handler.Extend(closure);
604604
}
605605

606606
/// <summary>
@@ -610,9 +610,9 @@ public static void Extend<TService>(Func<object, IContainer, object> closure)
610610
/// </summary>
611611
/// <typeparam name="TService">服务名或别名</typeparam>
612612
/// <param name="closure">闭包</param>
613-
public static void Extend<TService>(Func<object, object> closure)
613+
public static void Extend<TService>(Func<TService, object> closure)
614614
{
615-
Handler.Extend<TService>(closure);
615+
Handler.Extend(closure);
616616
}
617617

618618
/// <summary>

src/CatLib.Core/Support/Container/ContainerExtend.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -727,9 +727,16 @@ public static Func<TService> Factory<TService>(this IContainer container, params
727727
/// <typeparam name="TService">服务名或别名</typeparam>
728728
/// <param name="container">服务容器</param>
729729
/// <param name="closure">闭包</param>
730-
public static void Extend<TService>(this IContainer container, Func<object, IContainer, object> closure)
730+
public static void Extend<TService>(this IContainer container, Func<TService, IContainer, object> closure)
731731
{
732-
container.Extend(container.Type2Service(typeof(TService)), closure);
732+
container.Extend(container.Type2Service(typeof(TService)), (instance, c) =>
733+
{
734+
if (instance is TService)
735+
{
736+
return closure((TService)instance, c);
737+
}
738+
return instance;
739+
});
733740
}
734741

735742
/// <summary>
@@ -740,9 +747,16 @@ public static void Extend<TService>(this IContainer container, Func<object, ICon
740747
/// <typeparam name="TService">服务名或别名</typeparam>
741748
/// <param name="container">服务容器</param>
742749
/// <param name="closure">闭包</param>
743-
public static void Extend<TService>(this IContainer container, Func<object, object> closure)
750+
public static void Extend<TService>(this IContainer container, Func<TService, object> closure)
744751
{
745-
container.Extend(container.Type2Service(typeof(TService)), (instance, _) => closure(instance));
752+
container.Extend(container.Type2Service(typeof(TService)), (instance, _) =>
753+
{
754+
if (instance is TService)
755+
{
756+
return closure((TService)instance);
757+
}
758+
return instance;
759+
});
746760
}
747761

748762
/// <summary>

0 commit comments

Comments
 (0)