es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe una forma más sencilla de pasar una matriz como argumento de línea de comandos usando Microsoft.Extensions.Configuration?

Estoy trabajando en una aplicación de host genérico .net y me gustaría pasar alguna configuración a través de la línea de comandos y luego enlazarla a un objeto:

En este momento sé que puedo pasar el array Logins de la siguiente manera:

--CommandArgs:Logins:0=Login0 --CommandArgs:Logins:1=Login1 ...

El problema es la repetición del número de frases ‘–CommandArgs:Logins:{índice}’.
He intentado usar mapeos de interruptores para reducir las frases repetidas:

var switchMappings = new Dictionary<string, string="">
{
{"--Logins", "CommandArgs:Logins"}
};

configBuilder.AddCommandLine(args, switchMappings);
</string,>

Para lograr algo como:

--Logins:0=Login0 --Logins:1=Login1

Pero parece que no funciona de esa manera.

¿Hay alguna forma de utilizar mapeos de interruptores o alguna sintaxis más simple al pasar un array?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución podría ser utilizar un solo interruptor para el array de Logins y pasar los valores separados por comas:

    --Logins=Login0,Login1
    

    Luego, en el código, dividir los valores separados por comas en un array:

    var loginsSwitch = args.FirstOrDefault(arg => arg.StartsWith("--Logins="));
    if (loginsSwitch != null) 
    {
        var loginsValue = loginsSwitch.Split('=')[1];
        commandArgs.Logins = loginsValue.Split(',');
    }
    

    De esta manera, no es necesario repetir el interruptor --Logins para cada elemento del array.

Comments are closed.