Skip to content

Commit

Permalink
adding the sample demo for #555
Browse files Browse the repository at this point in the history
  • Loading branch information
dadhi committed Feb 16, 2023
1 parent 87ddfd7 commit 055c880
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 0 deletions.
15 changes: 15 additions & 0 deletions samples/DryIocDemo/DryIocDemo.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="DryIoc.Microsoft.DependencyInjection" Version="6.1.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
</ItemGroup>

</Project>
80 changes: 80 additions & 0 deletions samples/DryIocDemo/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
using DryIoc;
using DryIoc.Microsoft.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace DryIocDemo
{
internal class Program
{
static void Main(string[] args)
{
// var rules = Rules.MicrosoftDependencyInjectionRules;
var rules = Rules.MicrosoftDependencyInjectionRules.WithConcreteTypeDynamicRegistrations(reuse: Reuse.Transient);
// var rules = Rules.Default.WithConcreteTypeDynamicRegistrations(reuse: Reuse.Transient);
// var rules = Rules.Default.WithConcreteTypeDynamicRegistrations(reuse: Reuse.Transient).WithMicrosoftDependencyInjectionRules();

var container = new Container(rules);

var hostBuilder = Host.CreateDefaultBuilder()
.UseServiceProviderFactory(new DryIocServiceProviderFactory(container))
.ConfigureServices(services =>
{
services.AddSingleton<IService, Service>();
});


var host = hostBuilder.Build();

// WORKAROUND for now!
container = host.Services.GetService<IContainer>() as Container;

try
{
var resolveInterfaceFromContainer = container.Resolve<IService>();
}
catch (Exception ex)
{
Console.WriteLine("Catch a exception when resolve interface from Container: " + ex.Message);
}

try
{
var resolveImplementFromContainer = container.Resolve<Service>();
}
catch (Exception ex)
{
Console.WriteLine("Catch a exception when resolve implement from Container" + ex.Message);
}

try
{
var resolveInterfaceFromServiceProvider = host.Services.GetRequiredService<IService>();
}
catch (Exception ex)
{
Console.WriteLine("Catch a exception when resolve interface from ServiceProvider" + ex.Message);
}

try
{
var resolveImplementFromServiceProvider = host.Services.GetRequiredService<Service>();
}
catch (Exception ex)
{
Console.WriteLine("Catch a exception when resolve implement from ServiceProvider" + ex.Message);
}

host.RunAsync();
}
}


public interface IService
{
}

public class Service : IService
{
}
}

0 comments on commit 055c880

Please sign in to comment.