Skip to content

Commit 28b7ab6

Browse files
committed
resolved #92
1 parent e8cdc9d commit 28b7ab6

File tree

4 files changed

+52
-3
lines changed

4 files changed

+52
-3
lines changed

src/CatLib.Core.Tests/Support/Template/ManagerTests.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
* Document: http://catlib.io/
1010
*/
1111

12+
using System.ComponentModel;
1213
using Microsoft.VisualStudio.TestTools.UnitTesting;
1314

1415
namespace CatLib.Tests.Stl
@@ -86,5 +87,33 @@ public void TestGetExtend()
8687
return new TestManagerClass();
8788
});
8889
}
90+
91+
[TestMethod]
92+
public void TestOnAfterExtend()
93+
{
94+
var cls = new TestManagerClass();
95+
96+
TestManagerClass tmp = null;
97+
cls.Extend(() =>
98+
{
99+
return tmp = new TestManagerClass();
100+
});
101+
102+
var isResolving = false;
103+
var isAfterResolving = false;
104+
cls.OnAfterResolving += (instance) =>
105+
{
106+
Assert.AreEqual(true, isResolving);
107+
isAfterResolving = true;
108+
};
109+
cls.OnResolving += (instance) =>
110+
{
111+
isResolving = true;
112+
};
113+
114+
var result = cls[null];
115+
Assert.AreEqual(true, isAfterResolving);
116+
Assert.AreSame(tmp, result);
117+
}
89118
}
90119
}

src/CatLib.Core/CatLib/Facades/Template/Managed.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,23 @@ public abstract class Managed<TInterface, TExtend> : Facade<TInterface>
2727
where TInterface : IManaged<TExtend>
2828
{
2929
/// <summary>
30-
/// 当扩展被实现时
30+
/// 当扩展被构建时
3131
/// </summary>
3232
public static event Action<TExtend> OnResolving
3333
{
3434
add => Instance.OnResolving += value;
3535
remove => Instance.OnResolving -= value;
3636
}
3737

38+
/// <summary>
39+
/// 当扩展被构建时之后
40+
/// </summary>
41+
public static event Action<TExtend> OnAfterResolving
42+
{
43+
add => Instance.OnAfterResolving += value;
44+
remove => Instance.OnAfterResolving -= value;
45+
}
46+
3847
/// <summary>
3948
/// 自定义一个扩展构建器
4049
/// </summary>

src/CatLib.Core/Support/Template/IManaged.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,15 @@ namespace CatLib
2020
public interface IManaged<TInterface>
2121
{
2222
/// <summary>
23-
/// 当扩展被实现时
23+
/// 当扩展被构建时
2424
/// </summary>
2525
event Action<TInterface> OnResolving;
2626

27+
/// <summary>
28+
/// 当扩展被构建时之后
29+
/// </summary>
30+
event Action<TInterface> OnAfterResolving;
31+
2732
/// <summary>
2833
/// 自定义一个扩展构建器
2934
/// </summary>

src/CatLib.Core/Support/Template/Managed.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,15 @@ public abstract class Managed<TInterface> : IManaged<TInterface>
2626
private readonly Dictionary<string, Func<TInterface>> extendBuilder;
2727

2828
/// <summary>
29-
/// 当扩展被实现时
29+
/// 当扩展被构建时
3030
/// </summary>
3131
public event Action<TInterface> OnResolving;
3232

33+
/// <summary>
34+
/// 当扩展被构建时之后
35+
/// </summary>
36+
public event Action<TInterface> OnAfterResolving;
37+
3338
/// <summary>
3439
/// 构建一个新的管理器模板
3540
/// </summary>
@@ -103,6 +108,7 @@ protected virtual TInterface MakeExtend(string name)
103108
var extend = GetExtend(name)();
104109

105110
OnResolving?.Invoke(extend);
111+
OnAfterResolving?.Invoke(extend);
106112

107113
return extend;
108114
}

0 commit comments

Comments
 (0)