Skip to content

Commit 1f82fef

Browse files
committed
resolved #163
1 parent e093271 commit 1f82fef

File tree

4 files changed

+4
-147
lines changed

4 files changed

+4
-147
lines changed

src/CatLib.Core.Tests/Support/Container/ContainerHelperTests.cs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -261,21 +261,6 @@ public int getValue()
261261
}
262262
}
263263

264-
[TestMethod]
265-
public void TestWatch()
266-
{
267-
var container = new Container();
268-
container.Instance<IContainer>(container);
269-
270-
var cls = new TestWatchCLass();
271-
container.Instance<IWatchTest>(100);
272-
container.Watch<IWatchTest>(cls, "OnChange");
273-
container.Instance<IWatchTest>(200);
274-
275-
Assert.AreEqual(200, cls.value);
276-
Assert.AreSame(container, cls.container);
277-
}
278-
279264
[TestMethod]
280265
public void TestWatchLambda()
281266
{

src/CatLib.Core.Tests/Support/Container/ContainerTests.cs

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2291,21 +2291,6 @@ public void OnChange(int instance, IContainer container)
22912291
}
22922292
}
22932293

2294-
[TestMethod]
2295-
public void TestWatch()
2296-
{
2297-
var container = new Container();
2298-
2299-
container.Instance<IContainer>(container);
2300-
var cls = new TestWatchCLass();
2301-
container.Instance("WatchService", 100);
2302-
container.Watch("WatchService", cls, "OnChange");
2303-
container.Instance("WatchService", 200);
2304-
2305-
Assert.AreEqual(200, cls.value);
2306-
Assert.AreSame(container, cls.container);
2307-
}
2308-
23092294
[TestMethod]
23102295
public void TestInstanceAndDecorator()
23112296
{
@@ -2323,27 +2308,6 @@ public void TestInstanceAndDecorator()
23232308
Assert.AreSame(newObject, ins);
23242309
}
23252310

2326-
[TestMethod]
2327-
public void TestOccupiedKeyInstance()
2328-
{
2329-
var container = new Container();
2330-
container.Instance<IBindData>(null);
2331-
var cls = new TestWatchCLass();
2332-
container.Instance("WatchService", 100);
2333-
container.Watch("WatchService", cls, "OnChange");
2334-
var isThrow = false;
2335-
try
2336-
{
2337-
container.Instance("WatchService", 200);
2338-
}
2339-
catch (RuntimeException)
2340-
{
2341-
isThrow = true;
2342-
}
2343-
2344-
Assert.AreEqual(true, isThrow);
2345-
}
2346-
23472311
[TestMethod]
23482312
public void TestFlashOnBind()
23492313
{

src/CatLib.Core/CatLib/App.cs

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,43 +1450,6 @@ public static IContainer OnAfterResolving<TWhere>(Action<IBindData, TWhere> clos
14501450
return Handler.OnAfterResolving(closure);
14511451
}
14521452

1453-
/// <summary>
1454-
/// 关注指定的服务,当服务触发重定义时调用指定对象的指定方法
1455-
/// <para>调用是以依赖注入的形式进行的</para>
1456-
/// <para>服务的新建(第一次解决服务)操作并不会触发重定义</para>
1457-
/// </summary>
1458-
/// <param name="service">关注的服务名</param>
1459-
/// <param name="target">当服务发生重定义时调用的目标</param>
1460-
/// <param name="methodInfo">方法信息</param>
1461-
public static void Watch(string service, object target, MethodInfo methodInfo)
1462-
{
1463-
Handler.Watch(service, target, methodInfo);
1464-
}
1465-
1466-
/// <summary>
1467-
/// 关注指定的服务,当服务触发重定义时调用指定对象的指定方法
1468-
/// <param>调用是以依赖注入的形式进行的</param>
1469-
/// </summary>
1470-
/// <param name="service">关注的服务名</param>
1471-
/// <param name="target">当服务发生重定义时调用的目标</param>
1472-
/// <param name="method">方法名</param>
1473-
public static void Watch(string service, object target, string method)
1474-
{
1475-
Handler.Watch(service, target, method);
1476-
}
1477-
1478-
/// <summary>
1479-
/// 关注指定的服务,当服务触发重定义时调用指定对象的指定方法
1480-
/// <param>调用是以依赖注入的形式进行的</param>
1481-
/// </summary>
1482-
/// <typeparam name="TService">服务名</typeparam>
1483-
/// <param name="target">当服务发生重定义时调用的目标</param>
1484-
/// <param name="method">方法名</param>
1485-
public static void Watch<TService>(object target, string method)
1486-
{
1487-
Handler.Watch<TService>(target, method);
1488-
}
1489-
14901453
/// <summary>
14911454
/// 关注指定的服务,当服务触发重定义时调用指定对象的指定方法
14921455
/// <param>调用是以依赖注入的形式进行的</param>

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

Lines changed: 4 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,7 @@ public static void Extend(this IContainer container, string service, Func<object
789789
/// <param name="closure">闭包</param>
790790
public static void Extend<TService, TConcrete>(this IContainer container, Func<TConcrete, object> closure)
791791
{
792-
container.Extend(container.Type2Service(typeof(TService)), (instance, c) => closure((TConcrete) instance));
792+
container.Extend(container.Type2Service(typeof(TService)), (instance, c) => closure((TConcrete)instance));
793793
}
794794

795795
/// <summary>
@@ -802,7 +802,7 @@ public static void Extend<TService, TConcrete>(this IContainer container, Func<T
802802
public static void Extend<TService, TConcrete>(this IContainer container, Func<TConcrete, IContainer, object> closure)
803803
{
804804
container.Extend(container.Type2Service(typeof(TService)),
805-
(instance, c) => closure((TConcrete) instance, c));
805+
(instance, c) => closure((TConcrete)instance, c));
806806
}
807807

808808
/// <summary>
@@ -1001,61 +1001,6 @@ public static IContainer OnAfterResolving<T>(this IContainer container, Action<I
10011001
});
10021002
}
10031003

1004-
/// <summary>
1005-
/// 关注指定的服务,当服务触发重定义时调用指定对象的指定方法
1006-
/// <para>调用是以依赖注入的形式进行的</para>
1007-
/// <para>服务的新建(第一次解决服务)操作并不会触发重定义</para>
1008-
/// </summary>
1009-
/// <param name="container">服务容器</param>
1010-
/// <param name="service">关注的服务名</param>
1011-
/// <param name="target">当服务发生重定义时调用的目标</param>
1012-
/// <param name="methodInfo">方法信息</param>
1013-
public static void Watch(this IContainer container, string service, object target, MethodInfo methodInfo)
1014-
{
1015-
Guard.Requires<ArgumentNullException>(methodInfo != null);
1016-
1017-
if (!methodInfo.IsStatic)
1018-
{
1019-
Guard.Requires<ArgumentNullException>(target != null);
1020-
}
1021-
1022-
container.OnRebound(service, (instance) =>
1023-
{
1024-
container.Call(target, methodInfo, instance);
1025-
});
1026-
}
1027-
1028-
/// <summary>
1029-
/// 关注指定的服务,当服务触发重定义时调用指定对象的指定方法
1030-
/// <param>调用是以依赖注入的形式进行的</param>
1031-
/// </summary>
1032-
/// <param name="container">服务容器</param>
1033-
/// <param name="service">关注的服务名</param>
1034-
/// <param name="target">当服务发生重定义时调用的目标</param>
1035-
/// <param name="method">方法名</param>
1036-
public static void Watch(this IContainer container, string service, object target, string method)
1037-
{
1038-
Guard.Requires<ArgumentNullException>(target != null);
1039-
Guard.NotEmptyOrNull(method, nameof(method));
1040-
1041-
var methodInfo = target.GetType().GetMethod(method);
1042-
container.Watch(service, target, methodInfo);
1043-
}
1044-
1045-
/// <summary>
1046-
/// 关注指定的服务,当服务触发重定义时调用指定对象的指定方法
1047-
/// <param>调用是以依赖注入的形式进行的</param>
1048-
/// </summary>
1049-
/// <typeparam name="TService">服务名</typeparam>
1050-
/// <param name="container">服务容器</param>
1051-
/// <param name="target">当服务发生重定义时调用的目标</param>
1052-
/// <param name="method">方法名</param>
1053-
public static void Watch<TService>(this IContainer container, object target, string method)
1054-
{
1055-
Guard.Requires<ArgumentNullException>(method != null);
1056-
container.Watch(container.Type2Service(typeof(TService)), target, method);
1057-
}
1058-
10591004
/// <summary>
10601005
/// 关注指定的服务,当服务触发重定义时调用指定对象的指定方法
10611006
/// <param>调用是以依赖注入的形式进行的</param>
@@ -1066,7 +1011,7 @@ public static void Watch<TService>(this IContainer container, object target, str
10661011
public static void Watch<TService>(this IContainer container, Action method)
10671012
{
10681013
Guard.Requires<ArgumentNullException>(method != null);
1069-
container.Watch(container.Type2Service(typeof(TService)), method.Target, method.Method);
1014+
container.OnRebound(container.Type2Service(typeof(TService)), (instance) => method());
10701015
}
10711016

10721017
/// <summary>
@@ -1079,7 +1024,7 @@ public static void Watch<TService>(this IContainer container, Action method)
10791024
public static void Watch<TService>(this IContainer container, Action<TService> method)
10801025
{
10811026
Guard.Requires<ArgumentNullException>(method != null);
1082-
container.Watch(container.Type2Service(typeof(TService)), method.Target, method.Method);
1027+
container.OnRebound(container.Type2Service(typeof(TService)), (instance) => method((TService)instance));
10831028
}
10841029

10851030
/// <summary>

0 commit comments

Comments
 (0)