C # OOP Utilizzo della classe [duplicato]

2

Sono solo un po 'pignolo e volevo che parte del mio codice guardasse, sentissi e venisse usato in un modo specifico ma non sono sicuro che sia possibile.

Ho una classe che ho creato che può essere usata in questo modo

Query("ServerName", "TSQL").Run()

campione:

 class Query
    {
        public string serverName { get; set; }
        public string tSQL { get; set; }
        public Query(string ServerName, string TSQL)
        {
            serverName = ServerName;
            tSQL = TSQL;
        }

        public void Run()
        {
            //DO STUFF
        }
    }

è possibile creare una classe e sottoclassi in modo che io la usi in questo modo

Query.Server("ServerName").TSQL("TSQL").Run()
    
posta Hakubex 11.12.2014 - 23:03
fonte

1 risposta

7

Sì, ciò a cui ti riferisci è concatenamento di metodi . Dovresti aggiungere questi metodi alla tua classe e il ritorno per ogni metodo sarebbe la classe stessa.

class Query
{
    public string serverName { get; set; }
    public string tSQL { get; set; }
    public Query(string ServerName, string TSQL)
    {
        serverName = ServerName;
        tSQL = TSQL;
    }

    public void Run()
    {
        //DO STUFF
    }  

    public Query Server(string svrName)
    {
        serverName = svrName;
        return this;
    }

    public Query TSql(string tsql)
    {
        tSQL = tsql;
        return this;
    }
}

Finché ciascun metodo nella catena restituisce l'oggetto aggiornato in questione anziché il vuoto o qualche altra classe, funzionerà correttamente. Data la natura semplicistica di questo utilizzo, in realtà non consiglierei concatenare come funzione utile qui, ma sicuramente può essere applicato.

    
risposta data 11.12.2014 - 23:14
fonte