Desidero utilizzare PowerArgs per un'applicazione console che sto scrivendo. Offre alcune caratteristiche interessanti che mi piacerebbe provare. La mia radice ha questo aspetto:
public static void Main(string[] args)
{
try
{
Args.InvokeAction<MyClass>(args);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
Piuttosto interessante: PowerArgs crea un'istanza di MyClass
, analizza il dato args
e chiama l'azione corrispondente, definita dagli attributi come segue:
public class MyClass
{
private readonly IConsole _console;
private readonly IOtherDependency _dep;
public Summoner(IConsole console, IOtherDependency dep)
{
_console = console;
_dep = dep;
}
[ArgActionMethod]
public void DoMyThing(
[StickyArg][ArgRequired] string name,
[StickyArg][ArgRequired] string street,
[ArgRequired] string favoriteMeal)
{
var stuff = _dep.GetStuff(street, name);
var properties = stuff.GetType().GetProperties();
foreach (var property in properties)
{
_console.Write($"{property.Name}:{property.GetValue(summoner)}");
}
}
}
}
Potresti aver già visto il mio problema. PowerArgs genera un'eccezione poiché non può creare un'istanza di MyClass
. Dice che ha bisogno di un costruttore parametrico per farlo. Ma non voglio creare una console hard-coded nella mia classe o fare qualcosa come _dep = new OtherDependency()
nel mio metodo poiché non sarei in grado di testare l'unità.
C'è un modo per usare l'integrazione delle dipendenze con un costruttore senza parametri?
Grazie in anticipo!