Auto status change to "Under Review"
@@ -0,0 +1,29 | |||||
|
1 | <Project Sdk="Microsoft.NET.Sdk"> | |||
|
2 | <PropertyGroup Condition="'$(OSTYPE)'=='linux'"> | |||
|
3 | <TargetFrameworks>netcoreapp2.0;net46</TargetFrameworks> | |||
|
4 | <FrameworkPathOverride Condition="'$(TargetFramework)'=='net46'">/usr/lib/mono/4.5/</FrameworkPathOverride> | |||
|
5 | </PropertyGroup> | |||
|
6 | ||||
|
7 | <PropertyGroup Condition="'$(OSTYPE)'=='windows'"> | |||
|
8 | <TargetFrameworks>netcoreapp2.0;net46</TargetFrameworks> | |||
|
9 | </PropertyGroup> | |||
|
10 | ||||
|
11 | <PropertyGroup> | |||
|
12 | <IsPackable>false</IsPackable> | |||
|
13 | </PropertyGroup> | |||
|
14 | ||||
|
15 | <ItemGroup> | |||
|
16 | <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.6.0-preview-20180109-01" /> | |||
|
17 | <PackageReference Include="System.Reactive" Version="4.0.0" /> | |||
|
18 | <PackageReference Include="xunit" Version="2.3.1" /> | |||
|
19 | <PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" /> | |||
|
20 | <ProjectReference Include="../Implab/Implab.csproj"/> | |||
|
21 | <ProjectReference Include="../Implab.ServiceHost/Implab.ServiceHost.csproj"/> | |||
|
22 | <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> | |||
|
23 | </ItemGroup> | |||
|
24 | ||||
|
25 | <ItemGroup> | |||
|
26 | <None Include="data/**/*.*" CopyToOutputDirectory="PreserveNewest" /> | |||
|
27 | </ItemGroup> | |||
|
28 | ||||
|
29 | </Project> |
@@ -0,0 +1,74 | |||||
|
1 | <?xml version="1.0" encoding="UTF-8"?> | |||
|
2 | <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd"> | |||
|
3 | <namespace name="System"/> | |||
|
4 | <namespace name="System.Collections.Generic"/> | |||
|
5 | <namespace name="Implab.Components"/> | |||
|
6 | <namespace name="Implab.ServiceHost.Test.Mock"/> | |||
|
7 | ||||
|
8 | <!-- Default FooService --> | |||
|
9 | <register type="FooService{}"> | |||
|
10 | <property name="Name"> | |||
|
11 | <value>I'm default!</value> | |||
|
12 | </property> | |||
|
13 | </register> | |||
|
14 | ||||
|
15 | <!-- foo2 --> | |||
|
16 | <register name="foo2" type="Foo"> | |||
|
17 | <property name="Name"> | |||
|
18 | <value>GOOD</value> | |||
|
19 | </property> | |||
|
20 | <property name="IntValue"> | |||
|
21 | <value>2</value> | |||
|
22 | </property> | |||
|
23 | </register> | |||
|
24 | ||||
|
25 | <register type="Foo"> | |||
|
26 | <method name="AddRange"> | |||
|
27 | <array itemsType="Foo"> | |||
|
28 | <dependency name="foo2"/> | |||
|
29 | </array> | |||
|
30 | </method> | |||
|
31 | </register> | |||
|
32 | ||||
|
33 | <register type="IContainer{}" mapTo="Container{}"> | |||
|
34 | <constructor/> | |||
|
35 | <method name="SetInstance"> | |||
|
36 | <dependency type="T"/> | |||
|
37 | </method> | |||
|
38 | <method name="AddRange"> | |||
|
39 | <array itemsType="T"> | |||
|
40 | <dependency name="foo2-bar"/> | |||
|
41 | </array> | |||
|
42 | </method> | |||
|
43 | </register> | |||
|
44 | ||||
|
45 | <register type="List{}"> | |||
|
46 | <constructor /> | |||
|
47 | </register> | |||
|
48 | ||||
|
49 | <register type="IContainer{String}" mapTo="Container{String}"> | |||
|
50 | <constructor/> | |||
|
51 | <method name="SetInstance"> | |||
|
52 | <dependency type="String" name="name1"/> | |||
|
53 | </method> | |||
|
54 | </register> | |||
|
55 | ||||
|
56 | <serialized type="Foo+Bar"> | |||
|
57 | <Bar xmlns="" id="1"> | |||
|
58 | <Name>Baaar</Name> | |||
|
59 | </Bar> | |||
|
60 | </serialized> | |||
|
61 | ||||
|
62 | <value name="connection1" type="String"><![CDATA[Connect me <here>!]]></value> | |||
|
63 | <value name="name1" type="String" value="Hello!"/> | |||
|
64 | ||||
|
65 | <factory name="foo3" type="IFactory{Foo}" mapTo="FooFactory"> | |||
|
66 | <property name="Connection"> | |||
|
67 | <value><![CDATA[Wired "" objecty <> name @#$%^&]]></value> | |||
|
68 | </property> | |||
|
69 | <property name="UseSsl"> | |||
|
70 | <value>false</value> | |||
|
71 | </property> | |||
|
72 | </factory> | |||
|
73 | ||||
|
74 | </container> No newline at end of file |
@@ -0,0 +1,2 | |||||
|
1 | <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd"> | |||
|
2 | </container> No newline at end of file |
@@ -0,0 +1,65 | |||||
|
1 | <?xml version="1.0"?> | |||
|
2 | <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd"> | |||
|
3 | <namespace name="System"/> | |||
|
4 | <namespace name="System.Collections.Generic"/> | |||
|
5 | <namespace name="Implab.Components"/> | |||
|
6 | <namespace name="Implab.ServiceHost.Test.Mock"/> | |||
|
7 | ||||
|
8 | <register name="Big" type="Baz+Nut"> | |||
|
9 | <property name="Size"> | |||
|
10 | <value>5</value> | |||
|
11 | </property> | |||
|
12 | </register> | |||
|
13 | <register name="Mid" type="Baz+Nut"> | |||
|
14 | <property name="Size"> | |||
|
15 | <value>3</value> | |||
|
16 | </property> | |||
|
17 | </register> | |||
|
18 | <register name="Small" type="Baz+Nut"> | |||
|
19 | <property name="Size"> | |||
|
20 | <value>1</value> | |||
|
21 | </property> | |||
|
22 | </register> | |||
|
23 | <register type="Baz+Nut"> | |||
|
24 | <property name="Size"> | |||
|
25 | <value>2</value> | |||
|
26 | </property> | |||
|
27 | </register> | |||
|
28 | ||||
|
29 | <!-- register a generic interface mapping to the generic type --> | |||
|
30 | <register type="IBox{}" mapTo="Box{}"> | |||
|
31 | <property name="Value"> | |||
|
32 | <!-- the dependency type is implied from the property and will be the generic parameter {T} --> | |||
|
33 | <dependency optional="true"/> | |||
|
34 | </property> | |||
|
35 | </register> | |||
|
36 | ||||
|
37 | <factory name="Box2" type="BoxFactory{}"> | |||
|
38 | </factory> | |||
|
39 | ||||
|
40 | <register type="IBox{String}" mapTo="Box{String}"> | |||
|
41 | <property name="Name"> | |||
|
42 | <value>boxForString</value> | |||
|
43 | </property> | |||
|
44 | </register> | |||
|
45 | ||||
|
46 | <register name="Small" type="IBox{}" mapTo="Box{}"> | |||
|
47 | <property name="Value"> | |||
|
48 | <dependency name="Small" optional="true"/> | |||
|
49 | </property> | |||
|
50 | </register> | |||
|
51 | ||||
|
52 | <register type="SetOfBoxes{}"> | |||
|
53 | <constructor/> | |||
|
54 | <method name="BoxValues"> | |||
|
55 | <!-- only generic parameter or type without unresolved parameters | |||
|
56 | can be used, this is a limitation of Unity container. TODO --> | |||
|
57 | <array itemsType="T"> | |||
|
58 | <default /> | |||
|
59 | <dependency optional="true"/> | |||
|
60 | <dependency name="Small" optional="true"/> | |||
|
61 | </array> | |||
|
62 | </method> | |||
|
63 | </register> | |||
|
64 | ||||
|
65 | </container> No newline at end of file |
@@ -0,0 +1,6 | |||||
|
1 | <?xml version="1.0"?> | |||
|
2 | <Person xmlns="urn:implab:test:model"> | |||
|
3 | <FirstName>Trohn</FirstName> | |||
|
4 | <LastName>Javolta</LastName> | |||
|
5 | <Age>88</Age> | |||
|
6 | </Person> No newline at end of file |
@@ -0,0 +1,16 | |||||
|
1 | <?xml version="1.0"?> | |||
|
2 | <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd"> | |||
|
3 | <namespace name="System"/> | |||
|
4 | <namespace name="System.Collections.Generic"/> | |||
|
5 | <namespace name="Implab.Components"/> | |||
|
6 | <namespace name="Implab.ServiceHost.Test.Mock"/> | |||
|
7 | ||||
|
8 | <serialized name="p1" type="Person"> | |||
|
9 | <Person xmlns="urn:implab:test:model"> | |||
|
10 | <FirstName>Com</FirstName> | |||
|
11 | <LastName>Truise</LastName> | |||
|
12 | <Age>99</Age> | |||
|
13 | </Person> | |||
|
14 | </serialized> | |||
|
15 | <serialized name="p2" type="Person" href="p2.xml"/> | |||
|
16 | </container> No newline at end of file |
@@ -0,0 +1,63 | |||||
|
1 | <?xml version="1.0"?> | |||
|
2 | <container xmlns="http://implab.org/schemas/servicehost/unity.v1.xsd"> | |||
|
3 | <namespace name="System"/> | |||
|
4 | <namespace name="System.Collections.Generic"/> | |||
|
5 | <namespace name="Implab.Components"/> | |||
|
6 | <namespace name="Implab.ServiceHost.Test.Mock"/> | |||
|
7 | ||||
|
8 | <register name="Baz1" type="Baz"> | |||
|
9 | <property name="Numbers"> | |||
|
10 | <array> | |||
|
11 | <value>1</value> | |||
|
12 | <value>2</value> | |||
|
13 | <value>3</value> | |||
|
14 | </array> | |||
|
15 | </property> | |||
|
16 | </register> | |||
|
17 | ||||
|
18 | <register type="Baz"> | |||
|
19 | <property name="Nuts"> | |||
|
20 | <array> | |||
|
21 | <dependency/> | |||
|
22 | <dependency name="Big"/> | |||
|
23 | <dependency name="Big"/> | |||
|
24 | <dependency name="Small"/> | |||
|
25 | <dependency name="Mid"/> | |||
|
26 | </array> | |||
|
27 | </property> | |||
|
28 | </register> | |||
|
29 | ||||
|
30 | <register name="Big" type="Baz+Nut"> | |||
|
31 | <property name="Size"> | |||
|
32 | <value>5</value> | |||
|
33 | </property> | |||
|
34 | </register> | |||
|
35 | <register name="Mid" type="Baz+Nut"> | |||
|
36 | <property name="Size"> | |||
|
37 | <value>3</value> | |||
|
38 | </property> | |||
|
39 | </register> | |||
|
40 | <register name="Small" type="Baz+Nut"> | |||
|
41 | <property name="Size"> | |||
|
42 | <value>1</value> | |||
|
43 | </property> | |||
|
44 | </register> | |||
|
45 | <register type="Baz+Nut"> | |||
|
46 | <property name="Size"> | |||
|
47 | <value>2</value> | |||
|
48 | </property> | |||
|
49 | </register> | |||
|
50 | <factory type="BazFactory"> | |||
|
51 | <provides name="Baz2" type="Baz"/> | |||
|
52 | </factory> | |||
|
53 | ||||
|
54 | <factory name="Baz3" type="BazFactory"> | |||
|
55 | <property name="IdGenerator"> | |||
|
56 | <dependency/> | |||
|
57 | </property> | |||
|
58 | </factory> | |||
|
59 | ||||
|
60 | <factory type="GuidFactory"> | |||
|
61 | <singleton/> | |||
|
62 | </factory> | |||
|
63 | </container> No newline at end of file |
@@ -0,0 +1,23 | |||||
|
1 | using System; | |||
|
2 | using System.Collections.Generic; | |||
|
3 | ||||
|
4 | namespace Implab.ServiceHost.Test.Mock { | |||
|
5 | public class Baz { | |||
|
6 | ||||
|
7 | public Guid Id { | |||
|
8 | get; set; | |||
|
9 | } | |||
|
10 | ||||
|
11 | public int[] Numbers { | |||
|
12 | get; set; | |||
|
13 | } | |||
|
14 | ||||
|
15 | public Nut[] Nuts { | |||
|
16 | get; set; | |||
|
17 | } | |||
|
18 | ||||
|
19 | public class Nut { | |||
|
20 | public int Size { get; set; } | |||
|
21 | } | |||
|
22 | } | |||
|
23 | } No newline at end of file |
@@ -0,0 +1,17 | |||||
|
1 | using System; | |||
|
2 | using Implab.Components; | |||
|
3 | ||||
|
4 | namespace Implab.ServiceHost.Test.Mock { | |||
|
5 | public class BazFactory : IFactory<Baz> { | |||
|
6 | ||||
|
7 | public Func<Guid> IdGenerator { | |||
|
8 | get; set; | |||
|
9 | } | |||
|
10 | ||||
|
11 | Baz IFactory<Baz>.Create() { | |||
|
12 | return new Baz { | |||
|
13 | Id = IdGenerator?.Invoke() ?? Guid.Empty | |||
|
14 | }; | |||
|
15 | } | |||
|
16 | } | |||
|
17 | } No newline at end of file |
@@ -0,0 +1,13 | |||||
|
1 | using System; | |||
|
2 | using Implab.Components; | |||
|
3 | ||||
|
4 | namespace Implab.ServiceHost.Test.Mock { | |||
|
5 | public class BoxFactory<T> : IFactory<IBox<T>> { | |||
|
6 | public IBox<T> Create() { | |||
|
7 | return new Box<T> { | |||
|
8 | Name = "Creepy sugar" | |||
|
9 | }; | |||
|
10 | } | |||
|
11 | } | |||
|
12 | ||||
|
13 | } No newline at end of file |
@@ -0,0 +1,13 | |||||
|
1 | namespace Implab.ServiceHost.Test.Mock { | |||
|
2 | public class Box<T> : IBox<T> { | |||
|
3 | ||||
|
4 | public string Name { get; set; } | |||
|
5 | ||||
|
6 | public T Value { get; set; } | |||
|
7 | ||||
|
8 | public T GetBoxValue() { | |||
|
9 | return Value; | |||
|
10 | } | |||
|
11 | ||||
|
12 | } | |||
|
13 | } No newline at end of file |
@@ -0,0 +1,10 | |||||
|
1 | using System; | |||
|
2 | using Implab.Components; | |||
|
3 | ||||
|
4 | namespace Implab.ServiceHost.Test.Mock { | |||
|
5 | public class GuidFactory : IFactory<Guid> { | |||
|
6 | public Guid Create() { | |||
|
7 | return Guid.NewGuid(); | |||
|
8 | } | |||
|
9 | } | |||
|
10 | } No newline at end of file |
@@ -0,0 +1,6 | |||||
|
1 | namespace Implab.ServiceHost.Test.Mock { | |||
|
2 | public interface IBox<T> { | |||
|
3 | string Name { get; } | |||
|
4 | T GetBoxValue(); | |||
|
5 | } | |||
|
6 | } No newline at end of file |
@@ -0,0 +1,20 | |||||
|
1 | using System.Xml.Serialization; | |||
|
2 | ||||
|
3 | namespace Implab.ServiceHost.Test.Mock | |||
|
4 | { | |||
|
5 | [XmlRoot(Namespace="urn:implab:test:model")] | |||
|
6 | public class Person { | |||
|
7 | public string FirstName { get; set; } | |||
|
8 | ||||
|
9 | public string LastName { get; set; } | |||
|
10 | ||||
|
11 | public int Age { get; set; } | |||
|
12 | ||||
|
13 | [XmlIgnore] | |||
|
14 | public bool AgeSpecified { get; set; } | |||
|
15 | ||||
|
16 | ||||
|
17 | [XmlElement("Tag")] | |||
|
18 | public string[] Tags { get; set; } | |||
|
19 | } | |||
|
20 | } No newline at end of file |
@@ -0,0 +1,21 | |||||
|
1 | using System; | |||
|
2 | using System.Linq; | |||
|
3 | ||||
|
4 | namespace Implab.ServiceHost.Test.Mock { | |||
|
5 | public class SetOfBoxes<T> { | |||
|
6 | ||||
|
7 | public Guid Uuid { get; set; } | |||
|
8 | ||||
|
9 | public IBox<T>[] Boxes { | |||
|
10 | get; set; | |||
|
11 | } | |||
|
12 | ||||
|
13 | public void BoxValues(T[] items) { | |||
|
14 | if (items == null || items.Length == 0) | |||
|
15 | return; | |||
|
16 | ||||
|
17 | Boxes = items.Select(x => new Box<T> {Value = x}).ToArray(); | |||
|
18 | } | |||
|
19 | ||||
|
20 | } | |||
|
21 | } No newline at end of file |
@@ -0,0 +1,94 | |||||
|
1 | using System; | |||
|
2 | using System.Collections.Generic; | |||
|
3 | using System.IO; | |||
|
4 | using System.Linq; | |||
|
5 | using System.Threading; | |||
|
6 | using System.Threading.Tasks; | |||
|
7 | using Implab.Components; | |||
|
8 | using Implab.Diagnostics; | |||
|
9 | using Implab.ServiceHost.Test.Mock; | |||
|
10 | using Implab.ServiceHost.Unity; | |||
|
11 | using Unity; | |||
|
12 | using Xunit; | |||
|
13 | ||||
|
14 | namespace Implab.Test { | |||
|
15 | ||||
|
16 | public class UnityConfigTest { | |||
|
17 | ||||
|
18 | [Fact] | |||
|
19 | public void CreateContainer() { | |||
|
20 | var container = new UnityContainer(); | |||
|
21 | ||||
|
22 | container.LoadXmlConfiguration(Path.Combine("data","container","empty.xml")); | |||
|
23 | } | |||
|
24 | ||||
|
25 | [Fact] | |||
|
26 | public void SimpleServicesContainer() { | |||
|
27 | var container = new UnityContainer(); | |||
|
28 | ||||
|
29 | container.LoadXmlConfiguration(Path.Combine("data","container","simple.services.xml")); | |||
|
30 | ||||
|
31 | // named service registration | |||
|
32 | var baz1 = container.Resolve<Baz>("Baz1"); | |||
|
33 | ||||
|
34 | Assert.Equal(new [] {1,2,3}, baz1.Numbers); | |||
|
35 | ||||
|
36 | // default service registration | |||
|
37 | var baz = container.Resolve<Baz>(); | |||
|
38 | ||||
|
39 | Assert.Equal(new [] {2,5,5,1,3}, baz.Nuts.Select(x => x.Size)); | |||
|
40 | ||||
|
41 | // ServiceFactory registered without a name | |||
|
42 | // explicitly provides 'Baz2' service | |||
|
43 | var baz2 = container.Resolve<Baz>("Baz2"); | |||
|
44 | ||||
|
45 | // ServiceFactory registered with name 'Baz3' | |||
|
46 | // provides by default the service registration with same name | |||
|
47 | var baz3 = container.Resolve<Baz>("Baz3"); | |||
|
48 | ||||
|
49 | // This factory uses GuidGenerator registration | |||
|
50 | // to generate a new id value | |||
|
51 | Assert.NotEqual(Guid.Empty, baz3.Id); | |||
|
52 | } | |||
|
53 | ||||
|
54 | [Fact] | |||
|
55 | public void GenericServicesContainer() { | |||
|
56 | var container = new UnityContainer(); | |||
|
57 | container.LoadXmlConfiguration(Path.Combine("data","container","generic.services.xml")); | |||
|
58 | ||||
|
59 | // resolve using a generig interface mapping | |||
|
60 | var box = container.Resolve<IBox<Baz.Nut>>(); | |||
|
61 | ||||
|
62 | Assert.NotNull(box.GetBoxValue()); | |||
|
63 | ||||
|
64 | // registered generic defines dependency of type {T} | |||
|
65 | // in this case it should resolve to the default Nut with Size=2 | |||
|
66 | Assert.Equal(box.GetBoxValue().Size,2); | |||
|
67 | ||||
|
68 | // generic factory which provides generic services | |||
|
69 | var box2 = container.Resolve<IBox<Baz.Nut>>(); | |||
|
70 | ||||
|
71 | var set1 = container.Resolve<SetOfBoxes<Baz.Nut>>(); | |||
|
72 | ||||
|
73 | Assert.Equal(new int?[] {null,2,1}, set1.Boxes?.Select(x => x.GetBoxValue()?.Size)); | |||
|
74 | } | |||
|
75 | ||||
|
76 | [Fact] | |||
|
77 | public void SerializedInstances() { | |||
|
78 | var container = new UnityContainer(); | |||
|
79 | container.LoadXmlConfiguration(Path.Combine("data","container","serialized.instances.xml")); | |||
|
80 | ||||
|
81 | var p1 = container.Resolve<Person>("p1"); | |||
|
82 | var p2 = container.Resolve<Person>("p2"); | |||
|
83 | ||||
|
84 | Assert.Equal("Com", p1.FirstName); | |||
|
85 | Assert.True(p1.AgeSpecified); | |||
|
86 | Assert.Equal(99, p1.Age); | |||
|
87 | ||||
|
88 | Assert.Equal("Javolta", p2.LastName); | |||
|
89 | Assert.True(p2.AgeSpecified); | |||
|
90 | Assert.Equal(88, p2.Age); | |||
|
91 | } | |||
|
92 | ||||
|
93 | } | |||
|
94 | } No newline at end of file |
@@ -25,3 +25,5 Implab.Playground/obj/ | |||||
25 | Implab.Playground/bin/ |
|
25 | Implab.Playground/bin/ | |
26 | Implab.ServiceHost/bin/ |
|
26 | Implab.ServiceHost/bin/ | |
27 | Implab.ServiceHost/obj/ |
|
27 | Implab.ServiceHost/obj/ | |
|
28 | Implab.ServiceHost.Test/bin/ | |||
|
29 | Implab.ServiceHost.Test/obj/ |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractContainerItem.cs to Implab.ServiceHost/src/Unity/AbstractContainerItem.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractContainerItem.cs to Implab.ServiceHost/src/Unity/AbstractContainerItem.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractInjectionParameter.cs to Implab.ServiceHost/src/Unity/AbstractInjectionParameter.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractInjectionParameter.cs to Implab.ServiceHost/src/Unity/AbstractInjectionParameter.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractMemberInjection.cs to Implab.ServiceHost/src/Unity/AbstractMemberInjection.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractMemberInjection.cs to Implab.ServiceHost/src/Unity/AbstractMemberInjection.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractRegistration.cs to Implab.ServiceHost/src/Unity/AbstractRegistration.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AbstractRegistration.cs to Implab.ServiceHost/src/Unity/AbstractRegistration.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ArrayParameterElement.cs to Implab.ServiceHost/src/Unity/ArrayParameterElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ArrayParameterElement.cs to Implab.ServiceHost/src/Unity/ArrayParameterElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ArrayTypeReference.cs to Implab.ServiceHost/src/Unity/ArrayTypeReference.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ArrayTypeReference.cs to Implab.ServiceHost/src/Unity/ArrayTypeReference.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/AssemblyElement.cs to Implab.ServiceHost/src/Unity/AssemblyElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/AssemblyElement.cs to Implab.ServiceHost/src/Unity/AssemblyElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ConstructorInjectionElement.cs to Implab.ServiceHost/src/Unity/ConstructorInjectionElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ConstructorInjectionElement.cs to Implab.ServiceHost/src/Unity/ConstructorInjectionElement.cs |
@@ -50,7 +50,8 namespace Implab.ServiceHost.Unity { | |||||
50 | var builder = new TypeRegistrationBuilder( |
|
50 | var builder = new TypeRegistrationBuilder( | |
51 | m_resolver, |
|
51 | m_resolver, | |
52 | registrationType, |
|
52 | registrationType, | |
53 | implementationType |
|
53 | implementationType, | |
|
54 | this | |||
54 | ); |
|
55 | ); | |
55 |
|
56 | |||
56 | builder.Lifetime = registration.GetLifetime(this); |
|
57 | builder.Lifetime = registration.GetLifetime(this); | |
@@ -76,7 +77,8 namespace Implab.ServiceHost.Unity { | |||||
76 |
|
77 | |||
77 | var builder = new InstanceRegistrationBuilder ( |
|
78 | var builder = new InstanceRegistrationBuilder ( | |
78 | m_resolver, |
|
79 | m_resolver, | |
79 | registrationType |
|
80 | registrationType, | |
|
81 | this | |||
80 | ); |
|
82 | ); | |
81 |
|
83 | |||
82 | builder.Lifetime = registration.GetLifetime(this); |
|
84 | builder.Lifetime = registration.GetLifetime(this); | |
@@ -123,6 +125,15 namespace Implab.ServiceHost.Unity { | |||||
123 | } |
|
125 | } | |
124 |
|
126 | |||
125 | /// <summary> |
|
127 | /// <summary> | |
|
128 | /// Resolves a path ralatively to the current container configuration location. | |||
|
129 | /// </summary> | |||
|
130 | /// <param name="location">A path yto resolve</param> | |||
|
131 | /// <returns>Resolved Uri fot the specified location</returns> | |||
|
132 | public Uri MakeLocationUri(string location) { | |||
|
133 | return m_location != null ? new Uri(m_location, location) : new Uri(location); | |||
|
134 | } | |||
|
135 | ||||
|
136 | /// <summary> | |||
126 | /// Loads a configuration from the specified local file. |
|
137 | /// Loads a configuration from the specified local file. | |
127 | /// </summary> |
|
138 | /// </summary> | |
128 | /// <param name="file">The path to the configuration file.</param> |
|
139 | /// <param name="file">The path to the configuration file.</param> |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerConfigurationSchema.cs to Implab.ServiceHost/src/Unity/ContainerConfigurationSchema.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerConfigurationSchema.cs to Implab.ServiceHost/src/Unity/ContainerConfigurationSchema.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerElement.cs to Implab.ServiceHost/src/Unity/ContainerElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerElement.cs to Implab.ServiceHost/src/Unity/ContainerElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerLifetimeElement.cs to Implab.ServiceHost/src/Unity/ContainerLifetimeElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContainerLifetimeElement.cs to Implab.ServiceHost/src/Unity/ContainerLifetimeElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContextLifetimeElement.cs to Implab.ServiceHost/src/Unity/ContextLifetimeElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ContextLifetimeElement.cs to Implab.ServiceHost/src/Unity/ContextLifetimeElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/DefaultParameterElement.cs to Implab.ServiceHost/src/Unity/DefaultParameterElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/DefaultParameterElement.cs to Implab.ServiceHost/src/Unity/DefaultParameterElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/DependencyParameterElement.cs to Implab.ServiceHost/src/Unity/DependencyParameterElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/DependencyParameterElement.cs to Implab.ServiceHost/src/Unity/DependencyParameterElement.cs |
@@ -27,12 +27,23 namespace Implab.ServiceHost.Unity { | |||||
27 |
|
27 | |||
28 | public IEnumerable<ITypeMemberInjection> MemberInjections { |
|
28 | public IEnumerable<ITypeMemberInjection> MemberInjections { | |
29 | get { |
|
29 | get { | |
30 | yield return new FactoryInjector { |
|
30 | if (RegistrationType == null) | |
31 | Factory = (InjectionFactory)GetType() |
|
31 | throw new Exception($"RegistrationType must be specified"); | |
32 | .GetMethod(nameof(CreateInjectionFactory), BindingFlags.Static | BindingFlags.NonPublic) |
|
32 | if (!typeof(IFactory<>).MakeGenericType(RegistrationType).IsAssignableFrom(FactoryType)) | |
33 | .MakeGenericMethod(FactoryType, RegistrationType) |
|
33 | throw new Exception($"The factory {FactoryType} can't be used to create {RegistrationType} instances"); | |
34 | .Invoke(null, new [] { FactoryName }) |
|
34 | ||
35 | }; |
|
35 | if (FactoryType.ContainsGenericParameters) { | |
|
36 | yield return new FactoryInjector { | |||
|
37 | Factory = CreateDynamicInjectionFactory(FactoryName) | |||
|
38 | }; | |||
|
39 | } else { | |||
|
40 | yield return new FactoryInjector { | |||
|
41 | Factory = (InjectionFactory)GetType() | |||
|
42 | .GetMethod(nameof(CreateInjectionFactory), BindingFlags.Static | BindingFlags.NonPublic) | |||
|
43 | .MakeGenericMethod(FactoryType, RegistrationType) | |||
|
44 | .Invoke(null, new [] { FactoryName }) | |||
|
45 | }; | |||
|
46 | } | |||
36 | } |
|
47 | } | |
37 | } |
|
48 | } | |
38 |
|
49 | |||
@@ -59,5 +70,9 namespace Implab.ServiceHost.Unity { | |||||
59 |
|
70 | |||
60 | return new InjectionFactory(c => c.Resolve<TFac>(dependencyName).Create()); |
|
71 | return new InjectionFactory(c => c.Resolve<TFac>(dependencyName).Create()); | |
61 | } |
|
72 | } | |
|
73 | ||||
|
74 | static InjectionFactory CreateDynamicInjectionFactory(string dependencyName) { | |||
|
75 | return new InjectionFactory((c,t,name) => ((IFactory<object>)c.Resolve(t, dependencyName)).Create()); | |||
|
76 | } | |||
62 | } |
|
77 | } | |
63 | } No newline at end of file |
|
78 | } |
@@ -37,7 +37,7 namespace Implab.ServiceHost.Unity { | |||||
37 | RegistrationType = builder.ResolveType(item.RegistrationType), |
|
37 | RegistrationType = builder.ResolveType(item.RegistrationType), | |
38 | FactoryName = Name, |
|
38 | FactoryName = Name, | |
39 | FactoryType = factoryType, |
|
39 | FactoryType = factoryType, | |
40 | Lifetime = item.Lifetime.GetLifetime(builder) |
|
40 | Lifetime = item.Lifetime?.GetLifetime(builder) | |
41 | }; |
|
41 | }; | |
42 | builder.Visit(activator); |
|
42 | builder.Visit(activator); | |
43 | } |
|
43 | } |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/HierarchicalLifetimeElement.cs to Implab.ServiceHost/src/Unity/HierarchicalLifetimeElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/HierarchicalLifetimeElement.cs to Implab.ServiceHost/src/Unity/HierarchicalLifetimeElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/IInjectionParameter.cs to Implab.ServiceHost/src/Unity/IInjectionParameter.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/IInjectionParameter.cs to Implab.ServiceHost/src/Unity/IInjectionParameter.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/IInstanceRegistration.cs to Implab.ServiceHost/src/Unity/IInstanceRegistration.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/IInstanceRegistration.cs to Implab.ServiceHost/src/Unity/IInstanceRegistration.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/IRegistration.cs to Implab.ServiceHost/src/Unity/IRegistration.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/IRegistration.cs to Implab.ServiceHost/src/Unity/IRegistration.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ITypeMemberInjection.cs to Implab.ServiceHost/src/Unity/ITypeMemberInjection.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ITypeMemberInjection.cs to Implab.ServiceHost/src/Unity/ITypeMemberInjection.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ITypeRegistration.cs to Implab.ServiceHost/src/Unity/ITypeRegistration.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ITypeRegistration.cs to Implab.ServiceHost/src/Unity/ITypeRegistration.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/IncludeElement.cs to Implab.ServiceHost/src/Unity/IncludeElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/IncludeElement.cs to Implab.ServiceHost/src/Unity/IncludeElement.cs |
@@ -16,6 +16,8 namespace Implab.ServiceHost.Unity { | |||||
16 |
|
16 | |||
17 | public Type ValueType { get; private set; } |
|
17 | public Type ValueType { get; private set; } | |
18 |
|
18 | |||
|
19 | public ContainerBuilder Root { get; private set; } | |||
|
20 | ||||
19 | object m_value; |
|
21 | object m_value; | |
20 |
|
22 | |||
21 | public object Value { |
|
23 | public object Value { | |
@@ -42,9 +44,10 namespace Implab.ServiceHost.Unity { | |||||
42 | get { return m_injection != null; } |
|
44 | get { return m_injection != null; } | |
43 | } |
|
45 | } | |
44 |
|
46 | |||
45 | internal InjectionParameterBuilder(TypeResolver resolver, Type defaultType) { |
|
47 | internal InjectionParameterBuilder(TypeResolver resolver, Type defaultType, ContainerBuilder root) { | |
46 | m_resolver = resolver; |
|
48 | m_resolver = resolver; | |
47 | DefaultType = defaultType; |
|
49 | DefaultType = defaultType; | |
|
50 | Root = root; | |||
48 | } |
|
51 | } | |
49 |
|
52 | |||
50 | public Type ResolveInjectedValueType(string typeSpec) { |
|
53 | public Type ResolveInjectedValueType(string typeSpec) { | |
@@ -77,7 +80,11 namespace Implab.ServiceHost.Unity { | |||||
77 | ValueSpecified = false; |
|
80 | ValueSpecified = false; | |
78 | m_value = null; |
|
81 | m_value = null; | |
79 |
|
82 | |||
80 | m_injection = optional ? (InjectionParameterValue)new OptionalParameter(type, name) : new ResolvedParameter(type, name); |
|
83 | m_injection = optional ? | |
|
84 | type.IsGenericParameter ? | |||
|
85 | new OptionalGenericParameter(type.Name, name) | |||
|
86 | : (InjectionParameterValue)new OptionalParameter(type, name) | |||
|
87 | : new ResolvedParameter(type, name); | |||
81 | } |
|
88 | } | |
82 |
|
89 | |||
83 | internal void Visit(ArrayParameterElement arrayParameter) { |
|
90 | internal void Visit(ArrayParameterElement arrayParameter) { | |
@@ -100,21 +107,19 namespace Implab.ServiceHost.Unity { | |||||
100 |
|
107 | |||
101 | InjectionParameterValue[] injections = (arrayParameter.Items ?? new AbstractInjectionParameter[0]) |
|
108 | InjectionParameterValue[] injections = (arrayParameter.Items ?? new AbstractInjectionParameter[0]) | |
102 | .Select(x => { |
|
109 | .Select(x => { | |
103 | var builder = new InjectionParameterBuilder(m_resolver, itemsType); |
|
110 | var builder = new InjectionParameterBuilder(m_resolver, itemsType, Root); | |
104 | x.Visit(builder); |
|
111 | x.Visit(builder); | |
105 | return builder.Injection; |
|
112 | return builder.Injection; | |
106 | }) |
|
113 | }) | |
107 | .ToArray(); |
|
114 | .ToArray(); | |
108 |
|
115 | |||
109 |
|
|
116 | m_injection = itemsType.IsGenericParameter ? | |
110 | (InjectionParameterValue)new GenericResolvedArrayParameter(itemsType.Name, injections) : |
|
117 | (InjectionParameterValue)new GenericResolvedArrayParameter(itemsType.Name, injections) : | |
111 | new ResolvedArrayParameter(itemsType, injections); |
|
118 | new ResolvedArrayParameter(itemsType, injections); | |
112 |
|
119 | |||
113 | ValueType = arrayType; |
|
120 | ValueType = arrayType; | |
114 | m_value = null; |
|
121 | m_value = null; | |
115 | ValueSpecified = false; |
|
122 | ValueSpecified = false; | |
116 |
|
||||
117 | m_injection = array; |
|
|||
118 | } |
|
123 | } | |
119 |
|
124 | |||
120 | Type GetItemsType(Type collectionType) { |
|
125 | Type GetItemsType(Type collectionType) { | |
@@ -123,7 +128,7 namespace Implab.ServiceHost.Unity { | |||||
123 |
|
128 | |||
124 | Type itemsType = null; |
|
129 | Type itemsType = null; | |
125 |
|
130 | |||
126 | if (collectionType.GetGenericTypeDefinition() == typeof(IEnumerable<>)) { |
|
131 | if (collectionType.IsGenericType && collectionType.GetGenericTypeDefinition() == typeof(IEnumerable<>)) { | |
127 | itemsType = collectionType.GetGenericArguments()[0]; |
|
132 | itemsType = collectionType.GetGenericArguments()[0]; | |
128 | } else if (collectionType == typeof(IEnumerable)) { |
|
133 | } else if (collectionType == typeof(IEnumerable)) { | |
129 | itemsType = typeof(object); |
|
134 | itemsType = typeof(object); |
@@ -6,8 +6,8 namespace Implab.ServiceHost.Unity | |||||
6 |
|
6 | |||
7 | public InjectionParameterBuilder ValueBuilder { get; private set; } |
|
7 | public InjectionParameterBuilder ValueBuilder { get; private set; } | |
8 |
|
8 | |||
9 | internal InstanceRegistrationBuilder(TypeResolver typeResolver, Type registrationType) : base(registrationType) { |
|
9 | internal InstanceRegistrationBuilder(TypeResolver typeResolver, Type registrationType, ContainerBuilder root) : base(registrationType, root) { | |
10 | ValueBuilder = new InjectionParameterBuilder(typeResolver, registrationType); |
|
10 | ValueBuilder = new InjectionParameterBuilder(typeResolver, registrationType, root); | |
11 | } |
|
11 | } | |
12 | } |
|
12 | } | |
13 | } No newline at end of file |
|
13 | } |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/LifetimeElement.cs to Implab.ServiceHost/src/Unity/LifetimeElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/LifetimeElement.cs to Implab.ServiceHost/src/Unity/LifetimeElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/MethodInjectionElement.cs to Implab.ServiceHost/src/Unity/MethodInjectionElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/MethodInjectionElement.cs to Implab.ServiceHost/src/Unity/MethodInjectionElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/NamespaceElement.cs to Implab.ServiceHost/src/Unity/NamespaceElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/NamespaceElement.cs to Implab.ServiceHost/src/Unity/NamespaceElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/NestedTypeReference.cs to Implab.ServiceHost/src/Unity/NestedTypeReference.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/NestedTypeReference.cs to Implab.ServiceHost/src/Unity/NestedTypeReference.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/PropertyInjectionElement.cs to Implab.ServiceHost/src/Unity/PropertyInjectionElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/PropertyInjectionElement.cs to Implab.ServiceHost/src/Unity/PropertyInjectionElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ProvidesElement.cs to Implab.ServiceHost/src/Unity/ProvidesElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ProvidesElement.cs to Implab.ServiceHost/src/Unity/ProvidesElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/RegisterElement.cs to Implab.ServiceHost/src/Unity/RegisterElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/RegisterElement.cs to Implab.ServiceHost/src/Unity/RegisterElement.cs |
@@ -13,6 +13,10 namespace Implab.ServiceHost.Unity { | |||||
13 | /// Базовый класс для формирования записей в контейнере, созволяет указать время жизни для записи |
|
13 | /// Базовый класс для формирования записей в контейнере, созволяет указать время жизни для записи | |
14 | /// </summary> |
|
14 | /// </summary> | |
15 | public abstract class RegistrationBuilder { |
|
15 | public abstract class RegistrationBuilder { | |
|
16 | public ContainerBuilder Root { | |||
|
17 | get; private set; | |||
|
18 | } | |||
|
19 | ||||
16 | public Type RegistrationType { |
|
20 | public Type RegistrationType { | |
17 | get; |
|
21 | get; | |
18 | private set; |
|
22 | private set; | |
@@ -20,7 +24,8 namespace Implab.ServiceHost.Unity { | |||||
20 |
|
24 | |||
21 | internal LifetimeManager Lifetime { get; set; } |
|
25 | internal LifetimeManager Lifetime { get; set; } | |
22 |
|
26 | |||
23 | protected RegistrationBuilder(Type registrationType) { |
|
27 | protected RegistrationBuilder(Type registrationType, ContainerBuilder root) { | |
|
28 | Root = root; | |||
24 | RegistrationType = registrationType; |
|
29 | RegistrationType = registrationType; | |
25 | } |
|
30 | } | |
26 | } |
|
31 | } |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/RootTypeReference.cs to Implab.ServiceHost/src/Unity/RootTypeReference.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/RootTypeReference.cs to Implab.ServiceHost/src/Unity/RootTypeReference.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/Schema.cs to Implab.ServiceHost/src/Unity/Schema.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/Schema.cs to Implab.ServiceHost/src/Unity/Schema.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/SerializedElement.cs to Implab.ServiceHost/src/Unity/SerializedElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/SerializedElement.cs to Implab.ServiceHost/src/Unity/SerializedElement.cs |
@@ -12,9 +12,9 namespace Implab.ServiceHost.Unity | |||||
12 | [XmlAnyElement] |
|
12 | [XmlAnyElement] | |
13 | public XmlElement[] Content { get; set; } |
|
13 | public XmlElement[] Content { get; set; } | |
14 |
|
14 | |||
15 | public XmlReader GetReader() { |
|
15 | public XmlReader GetReader(InjectionParameterBuilder builder) { | |
16 | if (!string.IsNullOrEmpty(Location)) |
|
16 | if (!string.IsNullOrEmpty(Location)) | |
17 | return XmlReader.Create(Location); |
|
17 | return XmlReader.Create(builder.Root.MakeLocationUri(Location).ToString()); | |
18 | if (Content != null && Content.Length > 0) |
|
18 | if (Content != null && Content.Length > 0) | |
19 | return Content[0].CreateNavigator().ReadSubtree(); |
|
19 | return Content[0].CreateNavigator().ReadSubtree(); | |
20 |
|
20 | |||
@@ -25,7 +25,7 namespace Implab.ServiceHost.Unity | |||||
25 | var type = builder.ResolveInjectedValueType(TypeName); |
|
25 | var type = builder.ResolveInjectedValueType(TypeName); | |
26 |
|
26 | |||
27 | var serializer = new XmlSerializer(type); |
|
27 | var serializer = new XmlSerializer(type); | |
28 | using(var reader = GetReader()) |
|
28 | using(var reader = GetReader(builder)) | |
29 | builder.SetValue(type, serializer.Deserialize(reader)); |
|
29 | builder.SetValue(type, serializer.Deserialize(reader)); | |
30 |
|
30 | |||
31 | } |
|
31 | } |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/SingletonLifetimeElement.cs to Implab.ServiceHost/src/Unity/SingletonLifetimeElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/SingletonLifetimeElement.cs to Implab.ServiceHost/src/Unity/SingletonLifetimeElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/SpecializedTypeReference.cs to Implab.ServiceHost/src/Unity/SpecializedTypeReference.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/SpecializedTypeReference.cs to Implab.ServiceHost/src/Unity/SpecializedTypeReference.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeReference.cs to Implab.ServiceHost/src/Unity/TypeReference.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeReference.cs to Implab.ServiceHost/src/Unity/TypeReference.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeReferenceParser.cs to Implab.ServiceHost/src/Unity/TypeReferenceParser.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeReferenceParser.cs to Implab.ServiceHost/src/Unity/TypeReferenceParser.cs |
@@ -18,7 +18,7 namespace Implab.ServiceHost.Unity { | |||||
18 | private set; |
|
18 | private set; | |
19 | } |
|
19 | } | |
20 |
|
20 | |||
21 | internal TypeRegistrationBuilder(TypeResolver resolver, Type registrationType, Type implementationType) : base(registrationType) { |
|
21 | internal TypeRegistrationBuilder(TypeResolver resolver, Type registrationType, Type implementationType, ContainerBuilder root) : base(registrationType, root) { | |
22 | ImplementationType = implementationType; |
|
22 | ImplementationType = implementationType; | |
23 |
|
23 | |||
24 | // when registering a generic mapping, register all generic parameter names as local types |
|
24 | // when registering a generic mapping, register all generic parameter names as local types | |
@@ -37,7 +37,7 namespace Implab.ServiceHost.Unity { | |||||
37 |
|
37 | |||
38 | var parameters = constructorInjection.Parameters? |
|
38 | var parameters = constructorInjection.Parameters? | |
39 | .Select(x => { |
|
39 | .Select(x => { | |
40 | var valueBuilder = new InjectionParameterBuilder(m_resolver, null); |
|
40 | var valueBuilder = new InjectionParameterBuilder(m_resolver, null, Root); | |
41 | x.Visit(valueBuilder); |
|
41 | x.Visit(valueBuilder); | |
42 | return valueBuilder.Injection; |
|
42 | return valueBuilder.Injection; | |
43 | }) |
|
43 | }) | |
@@ -50,7 +50,7 namespace Implab.ServiceHost.Unity { | |||||
50 | internal void Visit(MethodInjectionElement methodInjection) { |
|
50 | internal void Visit(MethodInjectionElement methodInjection) { | |
51 | var parameters = methodInjection.Parameters? |
|
51 | var parameters = methodInjection.Parameters? | |
52 | .Select(x => { |
|
52 | .Select(x => { | |
53 | var valueBuilder = new InjectionParameterBuilder(m_resolver, null); |
|
53 | var valueBuilder = new InjectionParameterBuilder(m_resolver, null, Root); | |
54 | x.Visit(valueBuilder); |
|
54 | x.Visit(valueBuilder); | |
55 | return valueBuilder.Injection; |
|
55 | return valueBuilder.Injection; | |
56 | }) |
|
56 | }) | |
@@ -65,7 +65,7 namespace Implab.ServiceHost.Unity { | |||||
65 | throw new Exception($"A value value must be specified for the property '{propertyInjection.Name}'"); |
|
65 | throw new Exception($"A value value must be specified for the property '{propertyInjection.Name}'"); | |
66 |
|
66 | |||
67 | var propertyType = ImplementationType.GetProperty(propertyInjection.Name)?.PropertyType; |
|
67 | var propertyType = ImplementationType.GetProperty(propertyInjection.Name)?.PropertyType; | |
68 | var valueContext = new InjectionParameterBuilder(m_resolver, propertyType); |
|
68 | var valueContext = new InjectionParameterBuilder(m_resolver, propertyType, Root); | |
69 |
|
69 | |||
70 | propertyInjection.Value.Visit(valueContext); |
|
70 | propertyInjection.Value.Visit(valueContext); | |
71 | var injection = new InjectionProperty(propertyInjection.Name, valueContext.Injection); |
|
71 | var injection = new InjectionProperty(propertyInjection.Name, valueContext.Injection); |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeResolutionContext.cs to Implab.ServiceHost/src/Unity/TypeResolutionContext.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeResolutionContext.cs to Implab.ServiceHost/src/Unity/TypeResolutionContext.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeResolver.cs to Implab.ServiceHost/src/Unity/TypeResolver.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/TypeResolver.cs to Implab.ServiceHost/src/Unity/TypeResolver.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/UnityContainerExtensions.cs to Implab.ServiceHost/src/Unity/UnityContainerExtensions.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/UnityContainerExtensions.cs to Implab.ServiceHost/src/Unity/UnityContainerExtensions.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ValueElement.cs to Implab.ServiceHost/src/Unity/ValueElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ValueElement.cs to Implab.ServiceHost/src/Unity/ValueElement.cs |
1 | NO CONTENT: file renamed from Implab.ServiceHost/Unity/ValueParameterElement.cs to Implab.ServiceHost/src/Unity/ValueParameterElement.cs |
|
NO CONTENT: file renamed from Implab.ServiceHost/Unity/ValueParameterElement.cs to Implab.ServiceHost/src/Unity/ValueParameterElement.cs |
1 | NO CONTENT: file renamed from Implab.Test/DiagnosticsTest.cs to Implab.Test/src/DiagnosticsTest.cs |
|
NO CONTENT: file renamed from Implab.Test/DiagnosticsTest.cs to Implab.Test/src/DiagnosticsTest.cs |
1 | NO CONTENT: file renamed from Implab.Test/JsonTests.cs to Implab.Test/src/JsonTests.cs |
|
NO CONTENT: file renamed from Implab.Test/JsonTests.cs to Implab.Test/src/JsonTests.cs |
1 | NO CONTENT: file renamed from Implab.Test/MockPollComponent.cs to Implab.Test/src/MockPollComponent.cs |
|
NO CONTENT: file renamed from Implab.Test/MockPollComponent.cs to Implab.Test/src/MockPollComponent.cs |
1 | NO CONTENT: file renamed from Implab.Test/Model/Person.cs to Implab.Test/src/Model/Person.cs |
|
NO CONTENT: file renamed from Implab.Test/Model/Person.cs to Implab.Test/src/Model/Person.cs |
1 | NO CONTENT: file renamed from Implab.Test/PromiseHelper.cs to Implab.Test/src/PromiseHelper.cs |
|
NO CONTENT: file renamed from Implab.Test/PromiseHelper.cs to Implab.Test/src/PromiseHelper.cs |
1 | NO CONTENT: file renamed from Implab.Test/RunnableComponentTests.cs to Implab.Test/src/RunnableComponentTests.cs |
|
NO CONTENT: file renamed from Implab.Test/RunnableComponentTests.cs to Implab.Test/src/RunnableComponentTests.cs |
@@ -11,6 +11,8 Project("{FAE04EC0-301F-11D3-BF4B-00C04F | |||||
11 | EndProject |
|
11 | EndProject | |
12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.ServiceHost", "Implab.ServiceHost\Implab.ServiceHost.csproj", "{8B79FCBE-50DD-40A0-9B5E-E572072E4868}" |
|
12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.ServiceHost", "Implab.ServiceHost\Implab.ServiceHost.csproj", "{8B79FCBE-50DD-40A0-9B5E-E572072E4868}" | |
13 | EndProject |
|
13 | EndProject | |
|
14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.ServiceHost.Test", "Implab.ServiceHost.Test\Implab.ServiceHost.Test.csproj", "{CB844F94-E555-4F25-A932-7CB85C98CF86}" | |||
|
15 | EndProject | |||
14 | Global |
|
16 | Global | |
15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution |
|
17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution | |
16 | Debug|Any CPU = Debug|Any CPU |
|
18 | Debug|Any CPU = Debug|Any CPU | |
@@ -45,6 +47,18 Global | |||||
45 | {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x64.Build.0 = Release|x64 |
|
47 | {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x64.Build.0 = Release|x64 | |
46 | {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x86.ActiveCfg = Release|x86 |
|
48 | {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x86.ActiveCfg = Release|x86 | |
47 | {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x86.Build.0 = Release|x86 |
|
49 | {8B79FCBE-50DD-40A0-9B5E-E572072E4868}.Release|x86.Build.0 = Release|x86 | |
|
50 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
|
51 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
|
52 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|x64.ActiveCfg = Debug|x64 | |||
|
53 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|x64.Build.0 = Debug|x64 | |||
|
54 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|x86.ActiveCfg = Debug|x86 | |||
|
55 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Debug|x86.Build.0 = Debug|x86 | |||
|
56 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
|
57 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|Any CPU.Build.0 = Release|Any CPU | |||
|
58 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|x64.ActiveCfg = Release|x64 | |||
|
59 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|x64.Build.0 = Release|x64 | |||
|
60 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|x86.ActiveCfg = Release|x86 | |||
|
61 | {CB844F94-E555-4F25-A932-7CB85C98CF86}.Release|x86.Build.0 = Release|x86 | |||
48 | EndGlobalSection |
|
62 | EndGlobalSection | |
49 | GlobalSection(SolutionProperties) = preSolution |
|
63 | GlobalSection(SolutionProperties) = preSolution | |
50 | HideSolutionNode = FALSE |
|
64 | HideSolutionNode = FALSE |
@@ -20,7 +20,7 | |||||
20 | </PropertyGroup> |
|
20 | </PropertyGroup> | |
21 |
|
21 | |||
22 | <ItemGroup> |
|
22 | <ItemGroup> | |
23 | <EmbeddedResource Include="Xml\json.xsl"/> |
|
23 | <EmbeddedResource Include="src\Xml\json.xsl"/> | |
24 | </ItemGroup> |
|
24 | </ItemGroup> | |
25 |
|
25 | |||
26 | </Project> |
|
26 | </Project> |
1 | NO CONTENT: file renamed from Implab/AbstractEvent.cs to Implab/src/AbstractEvent.cs |
|
NO CONTENT: file renamed from Implab/AbstractEvent.cs to Implab/src/AbstractEvent.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/AutomatonConst.cs to Implab/src/Automaton/AutomatonConst.cs |
|
NO CONTENT: file renamed from Implab/Automaton/AutomatonConst.cs to Implab/src/Automaton/AutomatonConst.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/AutomatonTransition.cs to Implab/src/Automaton/AutomatonTransition.cs |
|
NO CONTENT: file renamed from Implab/Automaton/AutomatonTransition.cs to Implab/src/Automaton/AutomatonTransition.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/DFATable.cs to Implab/src/Automaton/DFATable.cs |
|
NO CONTENT: file renamed from Implab/Automaton/DFATable.cs to Implab/src/Automaton/DFATable.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/IAlphabet.cs to Implab/src/Automaton/IAlphabet.cs |
|
NO CONTENT: file renamed from Implab/Automaton/IAlphabet.cs to Implab/src/Automaton/IAlphabet.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/IAlphabetBuilder.cs to Implab/src/Automaton/IAlphabetBuilder.cs |
|
NO CONTENT: file renamed from Implab/Automaton/IAlphabetBuilder.cs to Implab/src/Automaton/IAlphabetBuilder.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/IDFATable.cs to Implab/src/Automaton/IDFATable.cs |
|
NO CONTENT: file renamed from Implab/Automaton/IDFATable.cs to Implab/src/Automaton/IDFATable.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/IDFATableBuilder.cs to Implab/src/Automaton/IDFATableBuilder.cs |
|
NO CONTENT: file renamed from Implab/Automaton/IDFATableBuilder.cs to Implab/src/Automaton/IDFATableBuilder.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/IndexedAlphabetBase.cs to Implab/src/Automaton/IndexedAlphabetBase.cs |
|
NO CONTENT: file renamed from Implab/Automaton/IndexedAlphabetBase.cs to Implab/src/Automaton/IndexedAlphabetBase.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/MapAlphabet.cs to Implab/src/Automaton/MapAlphabet.cs |
|
NO CONTENT: file renamed from Implab/Automaton/MapAlphabet.cs to Implab/src/Automaton/MapAlphabet.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/ParserException.cs to Implab/src/Automaton/ParserException.cs |
|
NO CONTENT: file renamed from Implab/Automaton/ParserException.cs to Implab/src/Automaton/ParserException.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/AltToken.cs to Implab/src/Automaton/RegularExpressions/AltToken.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/AltToken.cs to Implab/src/Automaton/RegularExpressions/AltToken.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/BinaryToken.cs to Implab/src/Automaton/RegularExpressions/BinaryToken.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/BinaryToken.cs to Implab/src/Automaton/RegularExpressions/BinaryToken.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/CatToken.cs to Implab/src/Automaton/RegularExpressions/CatToken.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/CatToken.cs to Implab/src/Automaton/RegularExpressions/CatToken.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EmptyToken.cs to Implab/src/Automaton/RegularExpressions/EmptyToken.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EmptyToken.cs to Implab/src/Automaton/RegularExpressions/EmptyToken.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EndToken.cs to Implab/src/Automaton/RegularExpressions/EndToken.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EndToken.cs to Implab/src/Automaton/RegularExpressions/EndToken.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EndTokenT.cs to Implab/src/Automaton/RegularExpressions/EndTokenT.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/EndTokenT.cs to Implab/src/Automaton/RegularExpressions/EndTokenT.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/ITaggedDFABuilder.cs to Implab/src/Automaton/RegularExpressions/ITaggedDFABuilder.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/ITaggedDFABuilder.cs to Implab/src/Automaton/RegularExpressions/ITaggedDFABuilder.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/IVisitor.cs to Implab/src/Automaton/RegularExpressions/IVisitor.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/IVisitor.cs to Implab/src/Automaton/RegularExpressions/IVisitor.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularDFA.cs to Implab/src/Automaton/RegularExpressions/RegularDFA.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularDFA.cs to Implab/src/Automaton/RegularExpressions/RegularDFA.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularExpressionVisitor.cs to Implab/src/Automaton/RegularExpressions/RegularExpressionVisitor.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularExpressionVisitor.cs to Implab/src/Automaton/RegularExpressions/RegularExpressionVisitor.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularExpressionVisitorT.cs to Implab/src/Automaton/RegularExpressions/RegularExpressionVisitorT.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/RegularExpressionVisitorT.cs to Implab/src/Automaton/RegularExpressions/RegularExpressionVisitorT.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/StarToken.cs to Implab/src/Automaton/RegularExpressions/StarToken.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/StarToken.cs to Implab/src/Automaton/RegularExpressions/StarToken.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/SymbolToken.cs to Implab/src/Automaton/RegularExpressions/SymbolToken.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/SymbolToken.cs to Implab/src/Automaton/RegularExpressions/SymbolToken.cs |
1 | NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/Token.cs to Implab/src/Automaton/RegularExpressions/Token.cs |
|
NO CONTENT: file renamed from Implab/Automaton/RegularExpressions/Token.cs to Implab/src/Automaton/RegularExpressions/Token.cs |
1 | NO CONTENT: file renamed from Implab/Components/Disposable.cs to Implab/src/Components/Disposable.cs |
|
NO CONTENT: file renamed from Implab/Components/Disposable.cs to Implab/src/Components/Disposable.cs |
1 | NO CONTENT: file renamed from Implab/Components/DisposablePool.cs to Implab/src/Components/DisposablePool.cs |
|
NO CONTENT: file renamed from Implab/Components/DisposablePool.cs to Implab/src/Components/DisposablePool.cs |
1 | NO CONTENT: file renamed from Implab/Components/ExecutionState.cs to Implab/src/Components/ExecutionState.cs |
|
NO CONTENT: file renamed from Implab/Components/ExecutionState.cs to Implab/src/Components/ExecutionState.cs |
1 | NO CONTENT: file renamed from Implab/Components/IAsyncComponent.cs to Implab/src/Components/IAsyncComponent.cs |
|
NO CONTENT: file renamed from Implab/Components/IAsyncComponent.cs to Implab/src/Components/IAsyncComponent.cs |
1 | NO CONTENT: file renamed from Implab/Components/IFactory.cs to Implab/src/Components/IFactory.cs |
|
NO CONTENT: file renamed from Implab/Components/IFactory.cs to Implab/src/Components/IFactory.cs |
1 | NO CONTENT: file renamed from Implab/Components/IInitializable.cs to Implab/src/Components/IInitializable.cs |
|
NO CONTENT: file renamed from Implab/Components/IInitializable.cs to Implab/src/Components/IInitializable.cs |
1 | NO CONTENT: file renamed from Implab/Components/IRunnable.cs to Implab/src/Components/IRunnable.cs |
|
NO CONTENT: file renamed from Implab/Components/IRunnable.cs to Implab/src/Components/IRunnable.cs |
1 | NO CONTENT: file renamed from Implab/Components/IServiceLocator.cs to Implab/src/Components/IServiceLocator.cs |
|
NO CONTENT: file renamed from Implab/Components/IServiceLocator.cs to Implab/src/Components/IServiceLocator.cs |
1 | NO CONTENT: file renamed from Implab/Components/LazyAndWeak.cs to Implab/src/Components/LazyAndWeak.cs |
|
NO CONTENT: file renamed from Implab/Components/LazyAndWeak.cs to Implab/src/Components/LazyAndWeak.cs |
1 | NO CONTENT: file renamed from Implab/Components/ObjectPool.cs to Implab/src/Components/ObjectPool.cs |
|
NO CONTENT: file renamed from Implab/Components/ObjectPool.cs to Implab/src/Components/ObjectPool.cs |
1 | NO CONTENT: file renamed from Implab/Components/PollingComponent.cs to Implab/src/Components/PollingComponent.cs |
|
NO CONTENT: file renamed from Implab/Components/PollingComponent.cs to Implab/src/Components/PollingComponent.cs |
1 | NO CONTENT: file renamed from Implab/Components/RunnableComponent.cs to Implab/src/Components/RunnableComponent.cs |
|
NO CONTENT: file renamed from Implab/Components/RunnableComponent.cs to Implab/src/Components/RunnableComponent.cs |
1 | NO CONTENT: file renamed from Implab/Components/ServiceLocator.cs to Implab/src/Components/ServiceLocator.cs |
|
NO CONTENT: file renamed from Implab/Components/ServiceLocator.cs to Implab/src/Components/ServiceLocator.cs |
1 | NO CONTENT: file renamed from Implab/Components/StateChangeEventArgs.cs to Implab/src/Components/StateChangeEventArgs.cs |
|
NO CONTENT: file renamed from Implab/Components/StateChangeEventArgs.cs to Implab/src/Components/StateChangeEventArgs.cs |
1 | NO CONTENT: file renamed from Implab/CustomEqualityComparer.cs to Implab/src/CustomEqualityComparer.cs |
|
NO CONTENT: file renamed from Implab/CustomEqualityComparer.cs to Implab/src/CustomEqualityComparer.cs |
1 | NO CONTENT: file renamed from Implab/Deferred.cs to Implab/src/Deferred.cs |
|
NO CONTENT: file renamed from Implab/Deferred.cs to Implab/src/Deferred.cs |
1 | NO CONTENT: file renamed from Implab/Deferred`1.cs to Implab/src/Deferred`1.cs |
|
NO CONTENT: file renamed from Implab/Deferred`1.cs to Implab/src/Deferred`1.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/ActivityScope.cs to Implab/src/Diagnostics/ActivityScope.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/ActivityScope.cs to Implab/src/Diagnostics/ActivityScope.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/LogicalOperation.cs to Implab/src/Diagnostics/LogicalOperation.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/LogicalOperation.cs to Implab/src/Diagnostics/LogicalOperation.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/LogicalOperationScope.cs to Implab/src/Diagnostics/LogicalOperationScope.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/LogicalOperationScope.cs to Implab/src/Diagnostics/LogicalOperationScope.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/SimpleTraceListener.cs to Implab/src/Diagnostics/SimpleTraceListener.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/SimpleTraceListener.cs to Implab/src/Diagnostics/SimpleTraceListener.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/Trace.cs to Implab/src/Diagnostics/Trace.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/Trace.cs to Implab/src/Diagnostics/Trace.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/TraceChannel.cs to Implab/src/Diagnostics/TraceChannel.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/TraceChannel.cs to Implab/src/Diagnostics/TraceChannel.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/TraceEventCodes.cs to Implab/src/Diagnostics/TraceEventCodes.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/TraceEventCodes.cs to Implab/src/Diagnostics/TraceEventCodes.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/TraceRegistry.cs to Implab/src/Diagnostics/TraceRegistry.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/TraceRegistry.cs to Implab/src/Diagnostics/TraceRegistry.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceAttribute.cs to Implab/src/Diagnostics/TraceSourceAttribute.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceAttribute.cs to Implab/src/Diagnostics/TraceSourceAttribute.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceChannel.cs to Implab/src/Diagnostics/TraceSourceChannel.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceChannel.cs to Implab/src/Diagnostics/TraceSourceChannel.cs |
1 | NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceChannel`1.cs to Implab/src/Diagnostics/TraceSourceChannel`1.cs |
|
NO CONTENT: file renamed from Implab/Diagnostics/TraceSourceChannel`1.cs to Implab/src/Diagnostics/TraceSourceChannel`1.cs |
1 | NO CONTENT: file renamed from Implab/ExceptionHelpers.cs to Implab/src/ExceptionHelpers.cs |
|
NO CONTENT: file renamed from Implab/ExceptionHelpers.cs to Implab/src/ExceptionHelpers.cs |
1 | NO CONTENT: file renamed from Implab/Formats/ByteAlphabet.cs to Implab/src/Formats/ByteAlphabet.cs |
|
NO CONTENT: file renamed from Implab/Formats/ByteAlphabet.cs to Implab/src/Formats/ByteAlphabet.cs |
1 | NO CONTENT: file renamed from Implab/Formats/CharAlphabet.cs to Implab/src/Formats/CharAlphabet.cs |
|
NO CONTENT: file renamed from Implab/Formats/CharAlphabet.cs to Implab/src/Formats/CharAlphabet.cs |
1 | NO CONTENT: file renamed from Implab/Formats/CharMap.cs to Implab/src/Formats/CharMap.cs |
|
NO CONTENT: file renamed from Implab/Formats/CharMap.cs to Implab/src/Formats/CharMap.cs |
1 | NO CONTENT: file renamed from Implab/Formats/FastInpurScanner.cs to Implab/src/Formats/FastInpurScanner.cs |
|
NO CONTENT: file renamed from Implab/Formats/FastInpurScanner.cs to Implab/src/Formats/FastInpurScanner.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Grammar.cs to Implab/src/Formats/Grammar.cs |
|
NO CONTENT: file renamed from Implab/Formats/Grammar.cs to Implab/src/Formats/Grammar.cs |
1 | NO CONTENT: file renamed from Implab/Formats/InputScanner.cs to Implab/src/Formats/InputScanner.cs |
|
NO CONTENT: file renamed from Implab/Formats/InputScanner.cs to Implab/src/Formats/InputScanner.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/JsonElementContext.cs to Implab/src/Formats/Json/JsonElementContext.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/JsonElementContext.cs to Implab/src/Formats/Json/JsonElementContext.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/JsonElementType.cs to Implab/src/Formats/Json/JsonElementType.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/JsonElementType.cs to Implab/src/Formats/Json/JsonElementType.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/JsonGrammar.cs to Implab/src/Formats/Json/JsonGrammar.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/JsonGrammar.cs to Implab/src/Formats/Json/JsonGrammar.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/JsonReader.cs to Implab/src/Formats/Json/JsonReader.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/JsonReader.cs to Implab/src/Formats/Json/JsonReader.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/JsonScanner.cs to Implab/src/Formats/Json/JsonScanner.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/JsonScanner.cs to Implab/src/Formats/Json/JsonScanner.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/JsonStringScanner.cs to Implab/src/Formats/Json/JsonStringScanner.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/JsonStringScanner.cs to Implab/src/Formats/Json/JsonStringScanner.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/JsonTextScanner.cs to Implab/src/Formats/Json/JsonTextScanner.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/JsonTextScanner.cs to Implab/src/Formats/Json/JsonTextScanner.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/JsonTokenType.cs to Implab/src/Formats/Json/JsonTokenType.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/JsonTokenType.cs to Implab/src/Formats/Json/JsonTokenType.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/JsonWriter.cs to Implab/src/Formats/Json/JsonWriter.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/JsonWriter.cs to Implab/src/Formats/Json/JsonWriter.cs |
1 | NO CONTENT: file renamed from Implab/Formats/Json/StringTranslator.cs to Implab/src/Formats/Json/StringTranslator.cs |
|
NO CONTENT: file renamed from Implab/Formats/Json/StringTranslator.cs to Implab/src/Formats/Json/StringTranslator.cs |
1 | NO CONTENT: file renamed from Implab/IDispatcher.cs to Implab/src/IDispatcher.cs |
|
NO CONTENT: file renamed from Implab/IDispatcher.cs to Implab/src/IDispatcher.cs |
1 | NO CONTENT: file renamed from Implab/IPromise.cs to Implab/src/IPromise.cs |
|
NO CONTENT: file renamed from Implab/IPromise.cs to Implab/src/IPromise.cs |
1 | NO CONTENT: file renamed from Implab/IPromiseT.cs to Implab/src/IPromiseT.cs |
|
NO CONTENT: file renamed from Implab/IPromiseT.cs to Implab/src/IPromiseT.cs |
1 | NO CONTENT: file renamed from Implab/IResolvable.cs to Implab/src/IResolvable.cs |
|
NO CONTENT: file renamed from Implab/IResolvable.cs to Implab/src/IResolvable.cs |
1 | NO CONTENT: file renamed from Implab/IResolvable`1.cs to Implab/src/IResolvable`1.cs |
|
NO CONTENT: file renamed from Implab/IResolvable`1.cs to Implab/src/IResolvable`1.cs |
1 | NO CONTENT: file renamed from Implab/Messaging/IConsumer.cs to Implab/src/Messaging/IConsumer.cs |
|
NO CONTENT: file renamed from Implab/Messaging/IConsumer.cs to Implab/src/Messaging/IConsumer.cs |
1 | NO CONTENT: file renamed from Implab/Messaging/IProducer.cs to Implab/src/Messaging/IProducer.cs |
|
NO CONTENT: file renamed from Implab/Messaging/IProducer.cs to Implab/src/Messaging/IProducer.cs |
1 | NO CONTENT: file renamed from Implab/Parallels/AsyncQueue.cs to Implab/src/Parallels/AsyncQueue.cs |
|
NO CONTENT: file renamed from Implab/Parallels/AsyncQueue.cs to Implab/src/Parallels/AsyncQueue.cs |
1 | NO CONTENT: file renamed from Implab/Parallels/BlockingQueue.cs to Implab/src/Parallels/BlockingQueue.cs |
|
NO CONTENT: file renamed from Implab/Parallels/BlockingQueue.cs to Implab/src/Parallels/BlockingQueue.cs |
1 | NO CONTENT: file renamed from Implab/Parallels/DispatchPool.cs to Implab/src/Parallels/DispatchPool.cs |
|
NO CONTENT: file renamed from Implab/Parallels/DispatchPool.cs to Implab/src/Parallels/DispatchPool.cs |
1 | NO CONTENT: file renamed from Implab/Parallels/SharedLock.cs to Implab/src/Parallels/SharedLock.cs |
|
NO CONTENT: file renamed from Implab/Parallels/SharedLock.cs to Implab/src/Parallels/SharedLock.cs |
1 | NO CONTENT: file renamed from Implab/Parallels/Signal.cs to Implab/src/Parallels/Signal.cs |
|
NO CONTENT: file renamed from Implab/Parallels/Signal.cs to Implab/src/Parallels/Signal.cs |
1 | NO CONTENT: file renamed from Implab/Parallels/SimpleAsyncQueue.cs to Implab/src/Parallels/SimpleAsyncQueue.cs |
|
NO CONTENT: file renamed from Implab/Parallels/SimpleAsyncQueue.cs to Implab/src/Parallels/SimpleAsyncQueue.cs |
1 | NO CONTENT: file renamed from Implab/Parallels/SyncContextDispatcher.cs to Implab/src/Parallels/SyncContextDispatcher.cs |
|
NO CONTENT: file renamed from Implab/Parallels/SyncContextDispatcher.cs to Implab/src/Parallels/SyncContextDispatcher.cs |
1 | NO CONTENT: file renamed from Implab/Parallels/ThreadPoolDispatcher.cs to Implab/src/Parallels/ThreadPoolDispatcher.cs |
|
NO CONTENT: file renamed from Implab/Parallels/ThreadPoolDispatcher.cs to Implab/src/Parallels/ThreadPoolDispatcher.cs |
1 | NO CONTENT: file renamed from Implab/Promise.cs to Implab/src/Promise.cs |
|
NO CONTENT: file renamed from Implab/Promise.cs to Implab/src/Promise.cs |
1 | NO CONTENT: file renamed from Implab/PromiseActionReaction.cs to Implab/src/PromiseActionReaction.cs |
|
NO CONTENT: file renamed from Implab/PromiseActionReaction.cs to Implab/src/PromiseActionReaction.cs |
1 | NO CONTENT: file renamed from Implab/PromiseActionReaction`1.cs to Implab/src/PromiseActionReaction`1.cs |
|
NO CONTENT: file renamed from Implab/PromiseActionReaction`1.cs to Implab/src/PromiseActionReaction`1.cs |
1 | NO CONTENT: file renamed from Implab/PromiseAll.cs to Implab/src/PromiseAll.cs |
|
NO CONTENT: file renamed from Implab/PromiseAll.cs to Implab/src/PromiseAll.cs |
1 | NO CONTENT: file renamed from Implab/PromiseAll`1.cs to Implab/src/PromiseAll`1.cs |
|
NO CONTENT: file renamed from Implab/PromiseAll`1.cs to Implab/src/PromiseAll`1.cs |
1 | NO CONTENT: file renamed from Implab/PromiseAwaiter.cs to Implab/src/PromiseAwaiter.cs |
|
NO CONTENT: file renamed from Implab/PromiseAwaiter.cs to Implab/src/PromiseAwaiter.cs |
1 | NO CONTENT: file renamed from Implab/PromiseAwaiter`1.cs to Implab/src/PromiseAwaiter`1.cs |
|
NO CONTENT: file renamed from Implab/PromiseAwaiter`1.cs to Implab/src/PromiseAwaiter`1.cs |
1 | NO CONTENT: file renamed from Implab/PromiseExecutor.cs to Implab/src/PromiseExecutor.cs |
|
NO CONTENT: file renamed from Implab/PromiseExecutor.cs to Implab/src/PromiseExecutor.cs |
1 | NO CONTENT: file renamed from Implab/PromiseExecutor`1.cs to Implab/src/PromiseExecutor`1.cs |
|
NO CONTENT: file renamed from Implab/PromiseExecutor`1.cs to Implab/src/PromiseExecutor`1.cs |
1 | NO CONTENT: file renamed from Implab/PromiseExtensions.cs to Implab/src/PromiseExtensions.cs |
|
NO CONTENT: file renamed from Implab/PromiseExtensions.cs to Implab/src/PromiseExtensions.cs |
1 | NO CONTENT: file renamed from Implab/PromiseFuncReaction`1.cs to Implab/src/PromiseFuncReaction`1.cs |
|
NO CONTENT: file renamed from Implab/PromiseFuncReaction`1.cs to Implab/src/PromiseFuncReaction`1.cs |
1 | NO CONTENT: file renamed from Implab/PromiseFuncReaction`2.cs to Implab/src/PromiseFuncReaction`2.cs |
|
NO CONTENT: file renamed from Implab/PromiseFuncReaction`2.cs to Implab/src/PromiseFuncReaction`2.cs |
1 | NO CONTENT: file renamed from Implab/PromiseHandler.cs to Implab/src/PromiseHandler.cs |
|
NO CONTENT: file renamed from Implab/PromiseHandler.cs to Implab/src/PromiseHandler.cs |
1 | NO CONTENT: file renamed from Implab/PromiseState.cs to Implab/src/PromiseState.cs |
|
NO CONTENT: file renamed from Implab/PromiseState.cs to Implab/src/PromiseState.cs |
1 | NO CONTENT: file renamed from Implab/PromiseTransientException.cs to Implab/src/PromiseTransientException.cs |
|
NO CONTENT: file renamed from Implab/PromiseTransientException.cs to Implab/src/PromiseTransientException.cs |
1 | NO CONTENT: file renamed from Implab/Promise`1.cs to Implab/src/Promise`1.cs |
|
NO CONTENT: file renamed from Implab/Promise`1.cs to Implab/src/Promise`1.cs |
1 | NO CONTENT: file renamed from Implab/RejectedPromise.cs to Implab/src/RejectedPromise.cs |
|
NO CONTENT: file renamed from Implab/RejectedPromise.cs to Implab/src/RejectedPromise.cs |
1 | NO CONTENT: file renamed from Implab/RejectedPromise`1.cs to Implab/src/RejectedPromise`1.cs |
|
NO CONTENT: file renamed from Implab/RejectedPromise`1.cs to Implab/src/RejectedPromise`1.cs |
1 | NO CONTENT: file renamed from Implab/ResolvedPromise.cs to Implab/src/ResolvedPromise.cs |
|
NO CONTENT: file renamed from Implab/ResolvedPromise.cs to Implab/src/ResolvedPromise.cs |
1 | NO CONTENT: file renamed from Implab/ResolvedPromise`1.cs to Implab/src/ResolvedPromise`1.cs |
|
NO CONTENT: file renamed from Implab/ResolvedPromise`1.cs to Implab/src/ResolvedPromise`1.cs |
1 | NO CONTENT: file renamed from Implab/Safe.cs to Implab/src/Safe.cs |
|
NO CONTENT: file renamed from Implab/Safe.cs to Implab/src/Safe.cs |
1 | NO CONTENT: file renamed from Implab/TaskHelpers.cs to Implab/src/TaskHelpers.cs |
|
NO CONTENT: file renamed from Implab/TaskHelpers.cs to Implab/src/TaskHelpers.cs |
1 | NO CONTENT: file renamed from Implab/Xml/JsonXmlCaseTransform.cs to Implab/src/Xml/JsonXmlCaseTransform.cs |
|
NO CONTENT: file renamed from Implab/Xml/JsonXmlCaseTransform.cs to Implab/src/Xml/JsonXmlCaseTransform.cs |
1 | NO CONTENT: file renamed from Implab/Xml/JsonXmlReader.cs to Implab/src/Xml/JsonXmlReader.cs |
|
NO CONTENT: file renamed from Implab/Xml/JsonXmlReader.cs to Implab/src/Xml/JsonXmlReader.cs |
1 | NO CONTENT: file renamed from Implab/Xml/JsonXmlReaderOptions.cs to Implab/src/Xml/JsonXmlReaderOptions.cs |
|
NO CONTENT: file renamed from Implab/Xml/JsonXmlReaderOptions.cs to Implab/src/Xml/JsonXmlReaderOptions.cs |
1 | NO CONTENT: file renamed from Implab/Xml/JsonXmlReaderPosition.cs to Implab/src/Xml/JsonXmlReaderPosition.cs |
|
NO CONTENT: file renamed from Implab/Xml/JsonXmlReaderPosition.cs to Implab/src/Xml/JsonXmlReaderPosition.cs |
1 | NO CONTENT: file renamed from Implab/Xml/SerializationHelpers.cs to Implab/src/Xml/SerializationHelpers.cs |
|
NO CONTENT: file renamed from Implab/Xml/SerializationHelpers.cs to Implab/src/Xml/SerializationHelpers.cs |
1 | NO CONTENT: file renamed from Implab/Xml/SerializersPool.cs to Implab/src/Xml/SerializersPool.cs |
|
NO CONTENT: file renamed from Implab/Xml/SerializersPool.cs to Implab/src/Xml/SerializersPool.cs |
1 | NO CONTENT: file renamed from Implab/Xml/XmlDefaultSerializer.cs to Implab/src/Xml/XmlDefaultSerializer.cs |
|
NO CONTENT: file renamed from Implab/Xml/XmlDefaultSerializer.cs to Implab/src/Xml/XmlDefaultSerializer.cs |
1 | NO CONTENT: file renamed from Implab/Xml/XmlNameContext.cs to Implab/src/Xml/XmlNameContext.cs |
|
NO CONTENT: file renamed from Implab/Xml/XmlNameContext.cs to Implab/src/Xml/XmlNameContext.cs |
1 | NO CONTENT: file renamed from Implab/Xml/XmlSerializerExtensions.cs to Implab/src/Xml/XmlSerializerExtensions.cs |
|
NO CONTENT: file renamed from Implab/Xml/XmlSerializerExtensions.cs to Implab/src/Xml/XmlSerializerExtensions.cs |
1 | NO CONTENT: file renamed from Implab/Xml/XmlSimpleAttribute.cs to Implab/src/Xml/XmlSimpleAttribute.cs |
|
NO CONTENT: file renamed from Implab/Xml/XmlSimpleAttribute.cs to Implab/src/Xml/XmlSimpleAttribute.cs |
1 | NO CONTENT: file renamed from Implab/Xml/XmlToJson.cs to Implab/src/Xml/XmlToJson.cs |
|
NO CONTENT: file renamed from Implab/Xml/XmlToJson.cs to Implab/src/Xml/XmlToJson.cs |
1 | NO CONTENT: file renamed from Implab/Xml/json.xsl to Implab/src/Xml/json.xsl |
|
NO CONTENT: file renamed from Implab/Xml/json.xsl to Implab/src/Xml/json.xsl |
1 | NO CONTENT: file renamed from Implab/Xml/readme.txt to Implab/src/Xml/readme.txt |
|
NO CONTENT: file renamed from Implab/Xml/readme.txt to Implab/src/Xml/readme.txt |
General Comments 3
ok, latest stable version should be in default
You need to be logged in to leave comments.
Login now