using System;
using Microsoft.Extensions.DependencyInjection;
using xExceptions.Constants;
using xCommons.Extensions;
using xStringService.Interfaces.Entities;
namespace xStringService.DI
{
public static class XDIHelperExtension
{
///
/// Register Service ...
///
///
///
public static void AddXStringService(
this IServiceCollection services,
ServiceLifetime lifeTime
)
{
AddStringService(
services,
lifeTime
);
}
//
#region Private ...
///
/// a LogTag for Service ...
///
private static string XLogTag = "XStringService";
///
/// print a log in Console ...
///
///
private static void Log(string message)
{
Console.WriteLine($"{XLogTag} => {message}");
}
///
/// Register Service ...
///
///
///
private static void AddStringService(
IServiceCollection services,
ServiceLifetime lifeTime
)
{
//
var exception = XException.InvalidArgs.ToException(); ;
//
// Services ...
var isServicesExists = !services.IsNull();
if (!isServicesExists)
{
//
Log("AddStringService failed, services not provided ...");
throw exception;
}
//
// Lifetime ...
var isLifetimeExists = !lifeTime.IsNull();
if (!isLifetimeExists)
{
//
Log("AddStringService failed, lifetime not provided ...");
throw exception;
}
//
// Check Repository Exists ...
var isRepositoryExists = !services
.GetRegisteredService()
.IsNull();
if (!isRepositoryExists)
{
//
Log("AddStringService failed, IXStringRepository not provided ...");
throw exception;
}
// //
// // Main Provider ...
// services.Add(new ServiceDescriptor(typeof(IXStringProvider), typeof(XStringProvider), lifeTime));
//
Log("AddStringService Succeed ...");
}
#endregion
}
}