2 Stimmen

Sollte ich IList oder Liste an den Controller in MVC zurückgeben?

Was ist der Unterschied zu dem Controller, der die Rückgabe in Bezug auf die Darstellung der Liste erhält?

In Linq dataContext:

public IList<Response> GetResponses(int ID)
    {
        var responses = from r in this.Responses where r.ID == ID orderby r.Date select r;

        return responses.ToList();
    }

OR

 public List<Response> GetResponses(int ID)
    {
        var responses = from r in this.Responses where r.ID == ID orderby r.Date select r;

        return responses.ToList();
    }

9voto

Andrew Kennan Punkte 13537

Ich bezweifle, dass es einen großen Unterschied zum Controller gibt, aber Sie sollten wahrscheinlich versuchen, so wenig Informationen wie möglich über die privaten Daten Ihrer Klassen preiszugeben. Das bedeutet, dass Sie eher Schnittstellen als konkrete Typen offenlegen und die Schnittstelle verwenden, die das Minimum an Informationen preisgibt, die der Client benötigt, um mit den Daten zu arbeiten.

Wenn der Controller nur eine IEnumerable<Response> dann sollten Sie in Erwägung ziehen, dies zum Rückgabetyp von GetResponses .

1voto

tvanfosson Punkte 506878

Der Unterschied ist, dass der Controller nicht aktualisiert werden muss, wenn Sie Ihre List-Implementierung ändern, wenn Sie die IList-Schnittstelle verwenden. Das ist wahrscheinlich keine große Sache, es sei denn, Sie planen, Ihre Bibliothek anderen zur Verfügung zu stellen. In diesem Fall ist die Abstraktion wahrscheinlich gerechtfertigt, da Sie nicht der Einzige sein werden, der Ihren Code aktualisieren muss, wenn Sie die Änderung vornehmen.

-6voto

Matt Hinze Punkte 13498

Erwägen Sie die Rückgabe eines Arrays und die Annahme von IEnumerable als Parameter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X