Skip to content

Commit 7072d38

Browse files
author
喻斌
committed
resolved #72
1 parent 962a420 commit 7072d38

File tree

3 files changed

+37
-20
lines changed

3 files changed

+37
-20
lines changed

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ public void TestContainerCallWithNullParams()
701701
{
702702
var container = MakeContainer();
703703
container.Instance("num", 777);
704-
container.Alias("@num", "num");
704+
container.Alias("$num", "num");
705705
var result = container.Call(this, "TestContainerCall", null);
706706
Assert.AreEqual(777, result);
707707
}
@@ -710,7 +710,7 @@ public void TestContainerCallWithNullParams()
710710
public void TestContainerCallWithErrorParams()
711711
{
712712
var container = MakeContainer();
713-
container.Singleton("num", (_, __) => "helloworld").Alias("@num");
713+
container.Singleton("num", (_, __) => "helloworld").Alias("$num");
714714
ExceptionAssert.Throws<UnresolvableException>(() =>
715715
{
716716
container.Call(this, "TestContainerCall", null);
@@ -850,7 +850,7 @@ public void MakeNoClassAttrInject()
850850
{
851851
var container = MakeContainer();
852852
container.Bind<NoClassAttrInject>();
853-
container.Bind("Time", (c, p) => 100, false).Alias("@Time");
853+
container.Bind("Time", (c, p) => 100, false).Alias("$Time");
854854

855855
var result = container.Make<NoClassAttrInject>();
856856
Assert.AreEqual(100, result.Time);
@@ -907,7 +907,7 @@ public void MakeNotClassConstructor()
907907
var container = MakeContainer();
908908
container.Bind<MakeTestNoParamClass>();
909909
container.Bind<MakeTestClassDependency>();
910-
container.Singleton("i", (_,__) => 77).Alias("@i");
910+
container.Singleton("i", (_,__) => 77).Alias("$i");
911911
var result = container.Make<MakeTestNoParamClass>();
912912
Assert.AreEqual(77, result.I);
913913
Assert.AreNotEqual(null, result.Dependency);
@@ -1890,7 +1890,7 @@ public void TestFormatException()
18901890
{
18911891
var container = new Container();
18921892
container.Instance("num", 10);
1893-
container.Alias("@num", "num");
1893+
container.Alias("$num", "num");
18941894
Assert.AreEqual(10, container.Call(this, "TestContainerCall", new ContainerTest()));
18951895
}
18961896

@@ -2064,12 +2064,12 @@ public void TestResloveAttrClassSpeculationServiceFunc()
20642064
var container = new Container();
20652065
container.Bind<TestResloveAttrClassSpeculationService>();
20662066
container.Instance("ex", new UnresolvableException());
2067-
container.Alias("@ex", "ex");
2067+
container.Alias("$ex", "ex");
20682068
container.Instance("rex", new UnresolvableException());
2069-
container.Alias("@rex", "rex");
2069+
container.Alias("$rex", "rex");
20702070
var cls = container.Make<TestResloveAttrClassSpeculationService>();
20712071

2072-
Assert.AreSame(container.Make("@ex"), cls.ex);
2072+
Assert.AreSame(container.Make("$ex"), cls.ex);
20732073
}
20742074

20752075
[TestMethod]
@@ -2078,7 +2078,7 @@ public void TestResloveAttrClassSpeculationServiceAttrs()
20782078
var container = new Container();
20792079
container.Bind<TestResloveAttrClassSpeculationService>();
20802080
container.Instance("ex", new UnresolvableException());
2081-
container.Alias("@ex", "ex");
2081+
container.Alias("$ex", "ex");
20822082

20832083
ExceptionAssert.Throws<UnresolvableException>(() =>
20842084
{

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,15 @@ public void TestContainerMethodContextual()
143143
new Application();
144144

145145
App.Instance("input", 1000);
146-
App.Alias("@input", "input");
146+
App.Alias("$input", "input");
147147
App.Instance("input2", 2000);
148-
App.Alias("@input2", "input2");
148+
App.Alias("$input2", "input2");
149149

150150
var cls = new TestContainerClass();
151-
App.BindMethod("Helloworld.Func1", cls).Needs("@input").Given("@input2");
151+
App.BindMethod("Helloworld.Func1", cls).Needs("$input").Given("$input2");
152152
App.BindMethod("Helloworld.Func2", cls)
153-
.Needs("@input").Given("@input2")
154-
.Needs("@input2").Given("@input"); ;
153+
.Needs("$input").Given("$input2")
154+
.Needs("$input2").Given("$input"); ;
155155

156156
Assert.AreEqual(2000, App.Invoke("Helloworld.Func1"));
157157
Assert.AreEqual((float)1000, App.Invoke("Helloworld.Func2"));

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

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,15 +1179,32 @@ protected virtual object ResloveClass(Bindable makeServiceBindData, string servi
11791179
/// <returns>推测的服务</returns>
11801180
protected virtual object SpeculationServiceByParamName(Bindable makeServiceBindData, string paramName, Type paramType)
11811181
{
1182-
var service = makeServiceBindData.GetContextual($"@{paramName}");
1183-
1184-
if (!CanMake(service))
1182+
foreach (var tag in GetVariableTags())
11851183
{
1186-
return null;
1184+
var service = makeServiceBindData.GetContextual($"{tag}{paramName}");
1185+
1186+
if (!CanMake(service))
1187+
{
1188+
continue;
1189+
}
1190+
1191+
var instance = Make(service);
1192+
if (ChangeType(ref instance, paramType))
1193+
{
1194+
return instance;
1195+
}
11871196
}
11881197

1189-
var instance = Make(service);
1190-
return ChangeType(ref instance, paramType) ? instance : null;
1198+
return null;
1199+
}
1200+
1201+
/// <summary>
1202+
/// 获取变量标签
1203+
/// </summary>
1204+
/// <returns>变量标签</returns>
1205+
protected virtual char[] GetVariableTags()
1206+
{
1207+
return new [] {'$', '@'};
11911208
}
11921209

11931210
/// <summary>

0 commit comments

Comments
 (0)