« Application console » : différence entre les versions
Apparence
Ligne 94 : | Ligne 94 : | ||
= [https://andrewlock.net/using-dependency-injection-in-a-net-core-console-application/ Dependency injection] = | = [https://andrewlock.net/using-dependency-injection-in-a-net-core-console-application/ Dependency injection] = | ||
* [https://pradeeploganathan.com/dotnet/dependency-injection-in-net-core-console-application/ Dependency injection in .net core console application] | |||
<kode lang='bash'> | <kode lang='bash'> | ||
dotnet add package Microsoft.Extensions.DependencyInjection | dotnet add package Microsoft.Extensions.DependencyInjection | ||
Ligne 102 : | Ligne 104 : | ||
{ | { | ||
var serviceProvider = ConfigureServices(services); | var serviceProvider = ConfigureServices(services); | ||
serviceProvider.GetRequiredService<ConsoleApplication>().Run(); | |||
} | } | ||
private static ServiceProvider ConfigureServices(IServiceCollection services) | private static ServiceProvider ConfigureServices(IServiceCollection services) => | ||
new ServiceCollection() | |||
.AddSingleton<IConfiguration>( | |||
_ => new ConfigurationBuilder() | |||
.AddJsonFile("appsettings.json.json", optional: true, reloadOnChange: false); | |||
.AddUserSecrets<Program>() | |||
.Build()) | |||
.AddSingleton<IMyService, MyService>() | .AddSingleton<IMyService, MyService>() | ||
.BuildServiceProvider(); | .BuildServiceProvider(); | ||
</filebox> | |||
<filebox fn='ConsoleApplication.cs'> | |||
class ConsoleApplication | |||
{ | |||
private readonly IConfiguration configuration; | |||
public ConsoleApplication(IConfiguration configuration) | |||
{ | |||
this.configuration = configuration; | |||
} | |||
public void Run() | |||
{ | |||
} | |||
} | } | ||
</filebox> | </filebox> |
Version du 22 novembre 2020 à 21:30
Liens
Code
using System;
namespace MonNS
{
class MaClasse
{
public static void Main(string[] args)
{
Console.WriteLine("");
}
}
}
|
Read input
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
if (keyInfo.Key == ConsoleKey.Escape) { }
|
Masquer la saisie d'un mot de passe
public static string ReadPassword()
{
string password = "";
ConsoleKeyInfo info = Console.ReadKey(true);
while (info.Key != ConsoleKey.Enter)
{
if (info.Key != ConsoleKey.Backspace)
{
Console.Write("*");
password += info.KeyChar;
}
else if (info.Key == ConsoleKey.Backspace)
{
if (!string.IsNullOrEmpty(password))
{
// remove one character from the list of password characters
password = password.Substring(0, password.Length - 1);
// get the location of the cursor
int pos = Console.CursorLeft;
// move the cursor to the left by one character
Console.SetCursorPosition(pos - 1, Console.CursorTop);
// replace it with space
Console.Write(" ");
// move the cursor to the left by one character again
Console.SetCursorPosition(pos - 1, Console.CursorTop);
}
}
info = Console.ReadKey(true);
}
// add a new line because user pressed enter at the end of their password
Console.WriteLine();
return password;
}
|
Masquer la fenêtre de la Console
[DllImport("kernel32.dll")]
private static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_HIDE = 0;
private const int SW_SHOW = 5;
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE);
|
Couleurs
Console.BackgroundColor = ConsoleColor.DarkRed;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("...");
Console.ResetColor();
|
Dependency injection
dotnet add package Microsoft.Extensions.DependencyInjection |
Program.cs |
static void Main(string[] args)
{
var serviceProvider = ConfigureServices(services);
serviceProvider.GetRequiredService<ConsoleApplication>().Run();
}
private static ServiceProvider ConfigureServices(IServiceCollection services) =>
new ServiceCollection()
.AddSingleton<IConfiguration>(
_ => new ConfigurationBuilder()
.AddJsonFile("appsettings.json.json", optional: true, reloadOnChange: false);
.AddUserSecrets<Program>()
.Build())
.AddSingleton<IMyService, MyService>()
.BuildServiceProvider();
|
ConsoleApplication.cs |
class ConsoleApplication
{
private readonly IConfiguration configuration;
public ConsoleApplication(IConfiguration configuration)
{
this.configuration = configuration;
}
public void Run()
{
}
}
|
Logging in .Net Core Console Apps
dotnet add package Microsoft.Extensions.Logging dotnet add package Microsoft.Extensions.Logging.Console |
Program.cs |
static void Main(string[] args)
{
var services = new ServiceCollection();
ConfigureServices(services);
// log
var serviceProvider = services.BuildServiceProvider();
var logger = serviceProvider.GetService<ILoggerFactory>()
.CreateLogger<Program>();
logger.LogDebug("Starting application");
}
private static void ConfigureServices(IServiceCollection services)
{
services.AddLogging(configure => configure.AddConsole());
}
|
Configuration
dotnet add package Microsoft.Extensions.Configuration.Json |
Program.cs |
private static IConfiguration Configuration;
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
|