Sto tentando di utilizzare lo schema di comando per la prima volta e con esso creo una fabbrica di comandi, seguo le indicazioni di un corso di pluralsight.com in cui implementa un'interfaccia per la fabbrica che include un metodo MakeCommand.Metodo di fabbrica - Parametri sconosciuti
Ora il mio problema deriva dal fatto che passa semplicemente una serie di stringhe come argomenti per questo metodo (la sua è un'app della riga di comando), tuttavia i miei comandi utilizzeranno una varietà di argomenti di una varietà di tipi, il mio piano era quello di utilizzare questi comandi per archiviare gli aggiornamenti ai modelli, quindi se l'applicazione non può connettersi ai servizi, i comandi verranno messi in coda per quando la connessione ritorna.
Questo è sempre stato un po 'un punto critico per me con interfacce generiche, come gestisco la moltitudine di argomenti possibili?
Il mio primo pensiero è stato quello di passare il modello stesso, con un semplice argomento di stringa con il tipo di comando (Elimina, Aggiorna, ecc.) Tuttavia, poiché i miei modelli non hanno alcuna classe base o interfaccia comune mi rimane un simile problema.
Mi manca qualcosa di base qui?
MODIFICA: è stato richiesto un esempio del mio problema.
ho un'interfaccia CommandFactory come tale
public interface ICommandFactory
{
string CommandName { get; }
string Description { get; }
ICommand MakeCommand(..arguments..)
}
e non ho modelli semplici come (puro esempio)
public class Model1
{
public string Name {get;set;}
public int Age {get;set;}
}
public class Model2
{
public DateTime Time {get;set;}
public double Price {get;set}
}
se volevo creare un comando che, per esempio aggiornato un Model1, mi chiedo come dovrebbe essere il MakeCommand dell'interfaccia, non posso fare MakeCommand (string cmdType, modello Model1) perché ho diversi modelli diversi che non condividono nessuna baseclass/interfaccia comune
Vorrei provare a creare una nuova interfaccia che contenga metodi per ottenere gli argomenti. Se ciò non corrisponde al tuo modello, dai un'occhiata ai parametri variadici. –
Il tuo problema non è chiaro per me. Puoi mostrare qualche codice rilevante? – CodeCaster
Certo, due secondi durante la modifica. – Ben