Compare commits
No commits in common. "main" and "unit-tests" have entirely different histories.
main
...
unit-tests
|
|
@ -7,8 +7,4 @@
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
namespace Bullet6.Solution1.Models
|
using Bullet6.Interfaces;
|
||||||
|
|
||||||
|
namespace Bullet6.Handlers
|
||||||
{
|
{
|
||||||
public static class EntityHandler
|
public static class EntityHandler
|
||||||
{
|
{
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
public interface IFlow
|
|
||||||
{
|
|
||||||
Task Start();
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace Bullet6.Solution1.Models
|
namespace Bullet6.Interfaces
|
||||||
{
|
{
|
||||||
public interface IEntity
|
public interface IEntity
|
||||||
{
|
{
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
namespace Bullet6.Solution1.Models
|
using Bullet6.Interfaces;
|
||||||
|
|
||||||
|
namespace Bullet6.Models
|
||||||
{
|
{
|
||||||
public class Employee : IEntity
|
public class Employee : IEntity
|
||||||
{
|
{
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
namespace Bullet6.Solution1.Models
|
using Bullet6.Interfaces;
|
||||||
|
|
||||||
|
namespace Bullet6.Models
|
||||||
{
|
{
|
||||||
public class Manager : IEntity
|
public class Manager : IEntity
|
||||||
{
|
{
|
||||||
|
|
@ -1,25 +1,15 @@
|
||||||
using Bullet6.Solution1;
|
using Bullet6.Handlers;
|
||||||
using Bullet6.Solution2;
|
using Bullet6.Interfaces;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Bullet6.Models;
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Bullet6
|
namespace Bullet6
|
||||||
{
|
{
|
||||||
public class Program
|
public class Program
|
||||||
{
|
{
|
||||||
static async Task Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
ServiceCollection services = new ServiceCollection();
|
IEntity[] entites = [new Employee() { Name = "Ilias" }, new Manager() { Name = "Maria" }];
|
||||||
services.AddSingleton<ISolution1Service, Solution1Service>();
|
foreach (var entity in entites) EntityHandler.PrintName(entity);
|
||||||
services.AddSingleton<ISolution2Service, Solution2Service>();
|
|
||||||
var serviceProvider = services.BuildServiceProvider();
|
|
||||||
|
|
||||||
List<IFlow> flows = new List<IFlow>()
|
|
||||||
{
|
|
||||||
serviceProvider.GetRequiredService<ISolution1Service>(),
|
|
||||||
serviceProvider.GetRequiredService<ISolution2Service>()
|
|
||||||
};
|
|
||||||
foreach (var flow in flows) await flow.Start();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
namespace Bullet6.Solution1
|
|
||||||
{
|
|
||||||
public interface ISolution1Service : IFlow
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
using Bullet6.Solution1.Models;
|
|
||||||
|
|
||||||
namespace Bullet6.Solution1
|
|
||||||
{
|
|
||||||
public class Solution1Service : ISolution1Service
|
|
||||||
{
|
|
||||||
public Task Start()
|
|
||||||
{
|
|
||||||
Console.WriteLine($"{nameof(Solution1Service)} starting");
|
|
||||||
IEntity[] entites = [new Employee() { Name = "Ilias" }, new Manager() { Name = "Maria" }];
|
|
||||||
foreach (var entity in entites) EntityHandler.PrintName(entity);
|
|
||||||
Console.WriteLine($"{nameof(Solution1Service)} ended");
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
namespace Bullet6.Solution2
|
|
||||||
{
|
|
||||||
public interface ISolution2Service : IFlow
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
namespace Bullet6.Solution2.Models
|
|
||||||
{
|
|
||||||
public class Employee : Entity
|
|
||||||
{
|
|
||||||
protected override void PrintInternal()
|
|
||||||
{
|
|
||||||
// print the rest possible fields
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
namespace Bullet6.Solution2.Models
|
|
||||||
{
|
|
||||||
public abstract class Entity
|
|
||||||
{
|
|
||||||
public string Name { get; set; }
|
|
||||||
protected abstract void PrintInternal();
|
|
||||||
|
|
||||||
public void PrintName()
|
|
||||||
{
|
|
||||||
Console.WriteLine(this.Name);
|
|
||||||
this.PrintInternal();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
namespace Bullet6.Solution2.Models
|
|
||||||
{
|
|
||||||
public class Manager : Entity
|
|
||||||
{
|
|
||||||
protected override void PrintInternal()
|
|
||||||
{
|
|
||||||
// print the rest possible fields
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
using Bullet6.Solution2.Models;
|
|
||||||
|
|
||||||
namespace Bullet6.Solution2
|
|
||||||
{
|
|
||||||
public class Solution2Service : ISolution2Service
|
|
||||||
{
|
|
||||||
public Task Start()
|
|
||||||
{
|
|
||||||
Console.WriteLine($"{nameof(Solution2Service)} starting");
|
|
||||||
Entity[] entites = [new Employee() { Name = "Ilias" }, new Manager() { Name = "Maria" }];
|
|
||||||
foreach (var entity in entites) entity.PrintName();
|
|
||||||
Console.WriteLine($"{nameof(Solution2Service)} ended");
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue