Laden...

Externe Klasse in Controller einbinden

Erstellt von JoergLueg vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.001 Views
J
JoergLueg Themenstarter:in
2 Beiträge seit 2017
vor 5 Jahren
Externe Klasse in Controller einbinden

Hallo zusammen,

ich bin relativ neu in der ASP.NET Web-Erstellung und habe die folgende Frage.
Ich habe mehrere Controller und binde dort immer wiederkehrende abfragen ein, meine Frage dazu.
Ist es möglich die wiederkehrenden Abfragen in eine externe Klasse einzubinden um dies dann aus dem Kontroller aufzurufen.

Ein jetziges Beisiel:

  
        public ActionResult Kontakt()
        {
            dynamic Model = new ExpandoObject();
            Model.Link = GetLink();
            Model.Tags = GetTags();
            return View(Model);
        }

Dieser Part sollte dann in eine externe Klasse, da die Abfragen in mehreren Kontrollern benötigt werden.


        private static List<Link> GetLink()
        {
            List<Link> _Link = new List<Link>();

            .... (Datenbankabfrage)....
        }


        private static List<Tags> GetTags()
        {
            List<Tags> _Tags = new List<Tags>();

            .... (Datenbankabfrage)....
        }

Ist das überhaupt möglich?
Wenn ja, wie kann ich das dann im Kontroller aufrufen?

Für eine Info wäre ich sehr dankbar.

LG Jörg

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

hm - da fehlt es scheinbar an mehr als ASP.NET-Wissen.

Grundlegend solltest du versuchen:
a) Eine 3-Schichten-Architektur aufzubauen, siehe [Artikel] Drei-Schichten-Architektur
b) Ich hoffe deine Datenbankschnittstelle sieht nicht wirklich so aus wie gezeigt, falls dem doch der Fall ist solltest du dir dringend folgende Sachen anschauen:

  1. Wieso static (meistens) doof ist: https://stackoverflow.com/questions/241339/when-to-use-static-classes-in-c-sharp
  2. UnitOfWork-Pattern (-> Sammlung von Aktionen für Datenbanktransaktionen)
  3. RepositoryPattern (-> gute Abstraktion zur Kommunikation mit der DB)
    c)ASP.NET (du schreibst leider nicht welche Version du verwendest) unterstützt in aktuellen Versionen "DependencyInjection" - in Zusammenarbeit mit den im Voraus genannten Stichpunkten kann mit Hilfe von DependencyInjection im Konstruktor der Klasse ein entsprechender Service injiziert werden, mit dem der/die Controller dann arbeiten können.

Mal als Beispiel wie sowas grob aussehen kann ein Projekt von Abt, wo man sich einiges abschauen kann ohne dass es all zu unübersichtlich wird:
IdentityServer4 Plattform Beispiel basierend auf .NET Core und ASP.NET Core

LG und Viel Erfolg

T
2.224 Beiträge seit 2008
vor 5 Jahren

Zu den Punkten von Taipi88 kommt noch hinzu, dass dynamic hier nicht für Web Entwicklung als Datentyp gedacht ist.
Dies solltest du vergessen und durch var oder den expliziten Typen ersetzt.
dynamic ist primär für die Arbeit mit COM Objekten gedacht und sollte entsprechend auch nur dort verwendet werden!

Link:
https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/dynamic
https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/var

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

J
JoergLueg Themenstarter:in
2 Beiträge seit 2017
vor 5 Jahren

Ich danke Euch,

na da habe ich noch einiges umzusetzen.

Danke für Eure schnelle Hilfe.

LG Jörg

16.834 Beiträge seit 2008
vor 5 Jahren

Zu den Punkten von Taipi88 kommt noch hinzu, dass dynamic hier nicht für Web Entwicklung als Datentyp gedacht ist.

Na das stimmt so nicht.. steht sogar in dem Link, den Du selbst gepostet hast. 😃
dynamic hat schon seine Berechtigung in der Web-Welt (und auch in anderen Bereichen neben COM); in diesem Fall nur wahrlich nicht.