Skip to content

Commit

Permalink
Merge pull request #2143 from PrismLibrary/lifo
Browse files Browse the repository at this point in the history
allow multiple registrations with Last In First Out
  • Loading branch information
dansiegel committed Aug 10, 2020
2 parents c71957a + 01f629a commit 4906e5f
Show file tree
Hide file tree
Showing 48 changed files with 1,182 additions and 533 deletions.
42 changes: 42 additions & 0 deletions PrismLibrary.sln
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,26 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Uno", "src\Uno
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MockApp", "tests\Forms\MockApp\MockApp.csproj", "{EBA75E47-213D-4C3E-B5C5-FB3D3513A729}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Containers", "Containers", "{F51A1580-B88D-418C-A9A1-699CEFEFB8FD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Ioc.DryIoc.Tests", "tests\Containers\Prism.Container.DryIoc.Tests\Prism.Ioc.DryIoc.Tests.csproj", "{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Ioc.Unity.Tests", "tests\Containers\Prism.Container.Unity.Tests\Prism.Ioc.Unity.Tests.csproj", "{704E14A4-C3A2-492D-9C4E-7D386A18B698}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Prism.Ioc.Shared", "tests\Containers\Prism.Container.Shared\Prism.Ioc.Shared.shproj", "{78932299-2281-4A59-BFB8-07DE3014F748}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\Containers\Prism.DryIoc.Shared\Prism.DryIoc.Shared.projitems*{02e0ecaa-b8c6-4eab-a9ab-164b1b99af35}*SharedItemsImports = 5
tests\Forms\Prism.DI.Forms.Tests\Prism.DI.Forms.Tests.projitems*{089c5e84-52c3-409e-924c-bd8f4833594b}*SharedItemsImports = 5
src\Containers\Prism.DryIoc.Shared\Prism.DryIoc.Shared.projitems*{0c8aab85-387c-41d2-abce-bafaf74b62b2}*SharedItemsImports = 5
src\Containers\Prism.DryIoc.Shared\Prism.DryIoc.Shared.projitems*{2d7ec81a-17b5-47c3-8ae1-619f7f8843aa}*SharedItemsImports = 5
tests\Containers\Prism.Container.Shared\Prism.Container.Shared.projitems*{2d7ec81a-17b5-47c3-8ae1-619f7f8843aa}*SharedItemsImports = 5
tests\Wpf\Prism.Container.Wpf.Shared\Prism.Container.Wpf.Shared.projitems*{367be810-5b34-4894-be47-1c8dcc67de81}*SharedItemsImports = 5
src\Containers\Prism.DryIoc.Shared\Prism.DryIoc.Shared.projitems*{6e7ec81d-da39-4c4f-a898-0148558c34f4}*SharedItemsImports = 13
src\Containers\Prism.Unity.Shared\Prism.Unity.Shared.projitems*{704e14a4-c3a2-492d-9c4e-7d386a18b698}*SharedItemsImports = 5
tests\Containers\Prism.Container.Shared\Prism.Container.Shared.projitems*{704e14a4-c3a2-492d-9c4e-7d386a18b698}*SharedItemsImports = 5
tests\Containers\Prism.Container.Shared\Prism.Container.Shared.projitems*{78932299-2281-4a59-bfb8-07de3014f748}*SharedItemsImports = 13
src\Containers\Prism.Unity.Shared\Prism.Unity.Shared.projitems*{9a1c368f-30ae-4c82-be03-9168ce089b56}*SharedItemsImports = 5
src\Containers\Prism.DryIoc.Shared\Prism.DryIoc.Shared.projitems*{aad8a958-546b-4b7d-bbd1-d79e825530eb}*SharedItemsImports = 5
tests\Wpf\Prism.Container.Wpf.Shared\Prism.Container.Wpf.Shared.projitems*{ba05687e-2317-4a65-805b-c596f52f7203}*SharedItemsImports = 5
Expand Down Expand Up @@ -327,6 +340,30 @@ Global
{EBA75E47-213D-4C3E-B5C5-FB3D3513A729}.Release|x64.Build.0 = Release|Any CPU
{EBA75E47-213D-4C3E-B5C5-FB3D3513A729}.Release|x86.ActiveCfg = Release|Any CPU
{EBA75E47-213D-4C3E-B5C5-FB3D3513A729}.Release|x86.Build.0 = Release|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Debug|x64.ActiveCfg = Debug|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Debug|x64.Build.0 = Debug|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Debug|x86.ActiveCfg = Debug|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Debug|x86.Build.0 = Debug|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Release|Any CPU.Build.0 = Release|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Release|x64.ActiveCfg = Release|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Release|x64.Build.0 = Release|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Release|x86.ActiveCfg = Release|Any CPU
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA}.Release|x86.Build.0 = Release|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Debug|Any CPU.Build.0 = Debug|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Debug|x64.ActiveCfg = Debug|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Debug|x64.Build.0 = Debug|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Debug|x86.ActiveCfg = Debug|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Debug|x86.Build.0 = Debug|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Release|Any CPU.ActiveCfg = Release|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Release|Any CPU.Build.0 = Release|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Release|x64.ActiveCfg = Release|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Release|x64.Build.0 = Release|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Release|x86.ActiveCfg = Release|Any CPU
{704E14A4-C3A2-492D-9C4E-7D386A18B698}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -355,10 +392,15 @@ Global
{75B1C655-8365-4130-8B79-C748BF0403F2} = {F3664D7A-6FF5-4D1F-9F5F-26EE87F032D3}
{D66336A6-07E5-401A-A710-DAEDD6975D59} = {75B1C655-8365-4130-8B79-C748BF0403F2}
{6E7EC81D-DA39-4C4F-A898-0148558C34F4} = {75B1C655-8365-4130-8B79-C748BF0403F2}
{8F959801-D494-4CAF-9437-90F30472E169} = {F3664D7A-6FF5-4D1F-9F5F-26EE87F032D3}
{D007EECA-A0AE-470C-9365-86135CEFA12E} = {8F959801-D494-4CAF-9437-90F30472E169}
{9A1C368F-30AE-4C82-BE03-9168CE089B56} = {8F959801-D494-4CAF-9437-90F30472E169}
{02E0ECAA-B8C6-4EAB-A9AB-164B1B99AF35} = {8F959801-D494-4CAF-9437-90F30472E169}
{EBA75E47-213D-4C3E-B5C5-FB3D3513A729} = {F8A0FDE6-8E75-47D1-9E33-02AB8E8AB473}
{F51A1580-B88D-418C-A9A1-699CEFEFB8FD} = {00FFDC13-7397-46F1-897E-A62A7575D28A}
{2D7EC81A-17B5-47C3-8AE1-619F7F8843AA} = {F51A1580-B88D-418C-A9A1-699CEFEFB8FD}
{704E14A4-C3A2-492D-9C4E-7D386A18B698} = {F51A1580-B88D-418C-A9A1-699CEFEFB8FD}
{78932299-2281-4A59-BFB8-07DE3014F748} = {F51A1580-B88D-418C-A9A1-699CEFEFB8FD}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C7433AE2-B1A0-4C1A-887E-5CAA7AAF67A6}
Expand Down
3 changes: 2 additions & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"sdk": {
"version": "3.1.300",
"rollForward": "latestMinor"
"rollForward": "latestMinor",
"allowPrerelease": false
},
"msbuild-sdks": {
"MSBuild.Sdk.Extras": "2.0.54"
Expand Down
10 changes: 5 additions & 5 deletions src/Containers/Prism.DryIoc.Shared/DryIocContainerExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class DryIocContainerExtension : IContainerExtension<IContainer>, IContainerInfo
.WithFuncAndLazyWithoutRegistration()
.WithTrackingDisposableTransients()
.WithoutFastExpressionCompiler()
.WithDefaultIfAlreadyRegistered(IfAlreadyRegistered.Replace);
.WithFactorySelector(Rules.SelectLastRegisteredFactory());

/// <summary>
/// The instance of the wrapped container
Expand Down Expand Up @@ -88,7 +88,7 @@ public IContainerRegistry RegisterInstance(Type type, object instance)
/// <returns>The <see cref="IContainerRegistry" /> instance</returns>
public IContainerRegistry RegisterInstance(Type type, object instance, string name)
{
Instance.RegisterInstance(type, instance, serviceKey: name);
Instance.RegisterInstance(type, instance, ifAlreadyRegistered: IfAlreadyRegistered.Replace, serviceKey: name);
return this;
}

Expand All @@ -113,7 +113,7 @@ public IContainerRegistry RegisterSingleton(Type from, Type to)
/// <returns>The <see cref="IContainerRegistry" /> instance</returns>
public IContainerRegistry RegisterSingleton(Type from, Type to, string name)
{
Instance.Register(from, to, Reuse.Singleton, serviceKey: name);
Instance.Register(from, to, Reuse.Singleton, ifAlreadyRegistered: IfAlreadyRegistered.Replace, serviceKey: name);
return this;
}

Expand Down Expand Up @@ -216,7 +216,7 @@ public IContainerRegistry Register(Type from, Type to)
/// <returns>The <see cref="IContainerRegistry" /> instance</returns>
public IContainerRegistry Register(Type from, Type to, string name)
{
Instance.Register(from, to, serviceKey: name);
Instance.Register(from, to, ifAlreadyRegistered: IfAlreadyRegistered.Replace, serviceKey: name);
return this;
}

Expand Down Expand Up @@ -336,7 +336,7 @@ public bool IsRegistered(Type type)
/// <returns><c>true</c> if the service is registered.</returns>
public bool IsRegistered(Type type, string name)
{
return Instance.IsRegistered(type, name);
return Instance.IsRegistered(type, name) || Instance.IsRegistered(type, name, FactoryType.Wrapper); ;
}

Type IContainerInfo.GetRegistrationType(string key)
Expand Down
22 changes: 19 additions & 3 deletions src/Containers/Prism.Unity.Shared/UnityContainerExtension.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Prism.Ioc;
Expand Down Expand Up @@ -68,7 +69,7 @@ public void FinalizeExtension() { }
public IContainerRegistry RegisterInstance(Type type, object instance)
{
Instance.RegisterInstance(type, instance);
return this;
return RegisterInstance(type, instance, type.AssemblyQualifiedName);
}

/// <summary>
Expand All @@ -93,7 +94,7 @@ public IContainerRegistry RegisterInstance(Type type, object instance, string na
public IContainerRegistry RegisterSingleton(Type from, Type to)
{
Instance.RegisterSingleton(from, to);
return this;
return RegisterSingleton(from, to, to.AssemblyQualifiedName);
}

/// <summary>
Expand All @@ -118,6 +119,7 @@ public IContainerRegistry RegisterSingleton(Type from, Type to, string name)
public IContainerRegistry RegisterSingleton(Type type, Func<object> factoryMethod)
{
Instance.RegisterFactory(type, _ => factoryMethod(), new ContainerControlledLifetimeManager());
Instance.RegisterFactory(type, $"{type.FullName}{Guid.NewGuid()}", _ => factoryMethod(), new ContainerControlledLifetimeManager());
return this;
}

Expand All @@ -130,6 +132,7 @@ public IContainerRegistry RegisterSingleton(Type type, Func<object> factoryMetho
public IContainerRegistry RegisterSingleton(Type type, Func<IContainerProvider, object> factoryMethod)
{
Instance.RegisterFactory(type, c => factoryMethod(c.Resolve<IContainerProvider>()), new ContainerControlledLifetimeManager());
Instance.RegisterFactory(type, $"{type.FullName}{Guid.NewGuid()}", c => factoryMethod(c.Resolve<IContainerProvider>()), new ContainerControlledLifetimeManager());
return this;
}

Expand All @@ -156,6 +159,7 @@ private IContainerRegistry RegisterManyInternal(Type implementingType, Type[] se
foreach (var service in serviceTypes)
{
Instance.RegisterFactory(service, c => c.Resolve(implementingType));
Instance.RegisterFactory(service, $"{service.FullName}{Guid.NewGuid()}", c => c.Resolve(implementingType));
}

return this;
Expand All @@ -170,7 +174,7 @@ private IContainerRegistry RegisterManyInternal(Type implementingType, Type[] se
public IContainerRegistry Register(Type from, Type to)
{
Instance.RegisterType(from, to);
return this;
return Register(from, to, to.AssemblyQualifiedName);
}

/// <summary>
Expand All @@ -195,6 +199,7 @@ public IContainerRegistry Register(Type from, Type to, string name)
public IContainerRegistry Register(Type type, Func<object> factoryMethod)
{
Instance.RegisterFactory(type, _ => factoryMethod());
Instance.RegisterFactory(type, $"{type.FullName}{Guid.NewGuid()}", _ => factoryMethod());
return this;
}

Expand All @@ -207,6 +212,7 @@ public IContainerRegistry Register(Type type, Func<object> factoryMethod)
public IContainerRegistry Register(Type type, Func<IContainerProvider, object> factoryMethod)
{
Instance.RegisterFactory(type, c => factoryMethod(c.Resolve<IContainerProvider>()));
Instance.RegisterFactory(type, $"{type.FullName}{Guid.NewGuid()}", c => factoryMethod(c.Resolve<IContainerProvider>()));
return this;
}

Expand All @@ -232,6 +238,7 @@ public IContainerRegistry RegisterMany(Type type, params Type[] serviceTypes)
public IContainerRegistry RegisterScoped(Type from, Type to)
{
Instance.RegisterType(from, to, new HierarchicalLifetimeManager());
Instance.RegisterType(from, to, to.AssemblyQualifiedName, new HierarchicalLifetimeManager());
return this;
}

Expand All @@ -244,6 +251,7 @@ public IContainerRegistry RegisterScoped(Type from, Type to)
public IContainerRegistry RegisterScoped(Type type, Func<object> factoryMethod)
{
Instance.RegisterFactory(type, c => factoryMethod(), new HierarchicalLifetimeManager());
Instance.RegisterFactory(type, $"{type.FullName}{Guid.NewGuid()}", c => factoryMethod(), new HierarchicalLifetimeManager());
return this;
}

Expand All @@ -256,6 +264,7 @@ public IContainerRegistry RegisterScoped(Type type, Func<object> factoryMethod)
public IContainerRegistry RegisterScoped(Type type, Func<IContainerProvider, object> factoryMethod)
{
Instance.RegisterFactory(type, c => factoryMethod(c.Resolve<IContainerProvider>()), new HierarchicalLifetimeManager());
Instance.RegisterFactory(type, $"{type.FullName}{Guid.NewGuid()}", c => factoryMethod(c.Resolve<IContainerProvider>()), new HierarchicalLifetimeManager());
return this;
}

Expand Down Expand Up @@ -288,6 +297,13 @@ public object Resolve(Type type, params (Type Type, object Instance)[] parameter
{
var c = _currentScope?.Container ?? Instance;
var overrides = parameters.Select(p => new DependencyOverride(p.Type, p.Instance)).ToArray();

if(typeof(IEnumerable).IsAssignableFrom(type) && type.GetGenericArguments().Length > 0)
{
type = type.GetGenericArguments()[0];
return c.ResolveAll(type, overrides);
}

return c.Resolve(type, overrides);
}
catch (Exception ex)
Expand Down
2 changes: 1 addition & 1 deletion src/Forms/Prism.DryIoc.Forms/Prism.DryIoc.Forms.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="DryIoc.dll" Version="4.1.4" />
<PackageReference Include="DryIoc.dll" Version="4.3.1" />
</ItemGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/Forms/Prism.Unity.Forms/Prism.Unity.Forms.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Unity.Container" Version="5.11.7" />
<PackageReference Include="Unity.Container" Version="5.11.8" />
</ItemGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/Uno/Prism.DryIoc.Uno/Prism.DryIoc.Uno.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<Compile Remove="..\..\Wpf\Prism.DryIoc.Wpf\Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="DryIoc.dll" Version="4.1.4" />
<PackageReference Include="DryIoc.dll" Version="4.3.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Prism.Uno\Prism.Uno.csproj" />
Expand Down
2 changes: 1 addition & 1 deletion src/Uno/Prism.Unity.Uno/Prism.Unity.Uno.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<UpToDateCheckInput Include="**\*.xaml" Exclude="bin\**\*.xaml;obj\**\*.xaml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Unity.Container" Version="5.11.7" />
<PackageReference Include="Unity.Container" Version="5.11.8" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\Wpf\Prism.Unity.Wpf\**\*.cs" Exclude="..\..\Wpf\Prism.Unity.Wpf\bin\**\*.cs;..\..\Wpf\Prism.Unity.Wpf\obj\**\*.cs" />
Expand Down
2 changes: 1 addition & 1 deletion src/Wpf/Prism.DryIoc.Wpf/Prism.DryIoc.Wpf.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="DryIoc.dll" Version="4.1.4" />
<PackageReference Include="DryIoc.dll" Version="4.3.1" />
</ItemGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/Wpf/Prism.Unity.Wpf/Prism.Unity.Wpf.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Unity.Container" Version="5.11.7" />
<PackageReference Include="Unity.Container" Version="5.11.8" />
</ItemGroup>

<ItemGroup>
Expand Down
10 changes: 10 additions & 0 deletions tests/Containers/Prism.Container.DryIoc.Tests/ContainerHelpers.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using DryIoc;

namespace Prism.Ioc.Tests
{
public static class ContainerHelpers
{
public static IContainer GetContainer(this IContainerExtension container) =>
Prism.DryIoc.PrismIocExtensions.GetContainer((IContainerProvider)container);
}
}
13 changes: 13 additions & 0 deletions tests/Containers/Prism.Container.DryIoc.Tests/ContainerSetup.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System;
using DryIoc;
using Prism.DryIoc;

namespace Prism.Ioc.Tests
{
partial class ContainerSetup
{
IContainerExtension CreateContainerInternal() => new DryIocContainerExtension();

public Type NativeContainerType => typeof(IContainer);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="DryIoc.dll" Version="4.3.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
<PackageReference Include="Moq" Version="4.14.5" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\src\Prism.Core\Prism.Core.csproj" />
</ItemGroup>

<Import Project="..\Prism.Container.Shared\Prism.Container.Shared.projitems" Label="Shared" />

<Import Project="..\..\..\src\Containers\Prism.DryIoc.Shared\Prism.DryIoc.Shared.projitems" Label="Shared" />

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Prism.Ioc.Mocks.Services
{
public class CompositeService : IServiceA, IServiceB, IServiceC
{
public IServiceB ServiceB => this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Prism.Ioc.Mocks.Services
{
public interface IServiceA
{
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Prism.Ioc.Mocks.Services
{
public interface IServiceB
{
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Prism.Ioc.Mocks.Services
{
public interface IServiceC
{
IServiceB ServiceB { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Prism.Ioc.Mocks.Services
{
public class ServiceA : IServiceA
{
public string SomeProperty { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Prism.Ioc.Mocks.Services
{
public class ServiceB : IServiceB
{
}
}
Loading

0 comments on commit 4906e5f

Please sign in to comment.