Ho esaminato molte domande simili a questa, ma nessuna di esse ha realmente toccato ciò che voglio esattamente fare. Quello che sto cercando di fare è leggere da una fonte esterna un elenco di variabili che includono anche il loro tipo di dati in un array di stringhe:Metodo con più tipi di reso
Esempio:
ID/Key Type Value/Data;
varName1 bool true;
varName2 string str;
varName3 int 5;
Ho quindi memorizzare questi sono oggetti in un dizionario come oggetti contenenti più stringhe, con l'ID che funge anche da chiave.
Quello che voglio fare è ora creare un metodo che utilizza un'istruzione switch che inserisce la stringa nel tipo di dati corretto e la restituisce senza dover specificare nulla nella chiamata al metodo. La funzione dovrebbe essere simile a questo:
public ??? Method(string key)
{
if(dictionary.ContainsKey(ID))
{
Var temp = dictionary[ID];
switch (temp.Type)
{
case "bool":
return Convert.ToBoolean(temp.Value);
case "int"
return Convert.ToInt(temp.Value);
case "string"
return temp.Value;
}
}
return "NULL";
}
La chiamata al metodo dovrebbe essere simile a questa:
int x = Method(string key);
string word = Method(string key);
boolean isTrue = Method(string key);
Forse ho perso qualcosa, ma devo ancora trovare qualcosa che fa davvero qualcosa di molto come questo. Ogni pensiero su questo è ben accetto.
Scusate, niente di simile in C#. Un metodo ha un tipo di reso fisso. Potresti usare 'object' come tipo di ritorno, ma dovresti eseguire il cast. – adv12
Dovresti rendere il metodo generico per farlo funzionare. E finirà per apparire come 'stringa parola = Metodo (chiave)' quando lo hai usato. Inoltre dovresti fare 'bool?' E 'int?dal momento che si desidera restituire 'null' quando la chiave non viene trovata. –
juharr
Se i tuoi valori sono stati memorizzati come 'Object', potresti fare' (T) value'. Che cosa ti impedisce di stringere 'string word = (string) Method (string key);', restituito, metodo restituisce 'object' –