Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Papst
Thema: Hello World! myCSharp auf .NET
Am im Forum: Ankündigungen

Es ist der Wahnsinn, was Abt und gfoidl da die letzten Wochen auf die Beine gestellt haben und das ganze unentgeltlich und in Ihrer Freizeit!
Meinen größten Respekt!

Thema: Binding aus mehreren JOIN
Am im Forum: Datentechnologien

Mit was arbeitest du? Plain SQL mit ADO.NET (o.ä.)?

Prinzipiell gehst du so vor:

- Daten abfragen
- über die Daten iterieren & die Daten in ein Objekt Projezieren (1)
- die Daten an deine Darstellung anpassen (2)


in (1) erhälst du die Zeilen in einer Klasse wie


class MitarbeiterZuweisung 
{
  public int MitarbeiterId {get; set;}
  public string Name {get; set; }
  public string Baustelle {get ;set;}
  public int Tag {get; set; }
}

in (2) gehst du her und passt es so an, wie du es anzeigen willst. Du musst also die Zeilen nach MitarbeiterId gruppieren. Das geht am einfachsten via LINQ:


var groupedByEmployee = rows.GroupBy(r => r.MitarbeiterId);
Jetzt musst du die erhaltenen Daten nur noch in eine ObservableCollection<T> überführen, wobei T eine von dir erstellte Klasse ist, die dein View benötigt.

Thema: DataGidView DataBinding WPF wahrscheinlich Verständnisproblem
Am im Forum: GUI: WPF und XAML

Ein Binding muss bei WPF immer auf eine Property gehen, niemals auf eine Member Variable.

Wenn trotzdem noch nichts angezeigt wird, benötigst du INotifyPropertyChanged in deinem ViewModel, wenn du Veränderungen im Code an der gebundenen Collection machen willst, sollte es eine ObservableCollection sein.

Thema: Wieso liefert 'dotnet --list-sdks' einen 'Nicht gefunden' Fehler?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Wenn du die SDK's listen willst, solltest du anstatt der runtime den SDK installieren.

-> SDK zur Entwicklung
-> Runtime zum ausführen

Thema: Womit erstelle ich am besten Live-Diagramme?
Am im Forum: Rund um die Programmierung

Wenn es "nur" ein Chart ist (also z.B. LineChart), da brauchst du das nicht selber programmieren und zeichnen. Dafür gibt es zuhauf fertige Bibliotheken, die dir das abnehmen.

OxyPlot, D3, ...

Thema: Wie kann ich im IIS Server einen Benutzer im App-Pool mit Schreibrechten auf einen Folder erstellen?
Am im Forum: Web-Technologien

Das Vorgehen ist im Prinzip ganz einfach.

--> Wenn der Benutzer auch auf die DB zugreifen können soll und du den WindowsAuth dafür verwenden willst, wird es wohl ein AD User werden müssen.

Wenn der Benutzer angelegt ist, gehst du in den IIS Manager, dann auf Application Pools, erstellst einen neuen Application Pool oder wählst den vorhandenen aus und weist ihm den Benutzer zu.
Danach musst du nur sicherstellen, dass die Site im IIS auf dem Application Pool läuft. Das stellst du bei der Site ein.

Thema: Wie kann ich webpack mit Blazor WebAssembly nutzen?
Am im Forum: Web-Technologien

Die Doku sagt, dass man den command weglassen kann.. hast du mal mit "bundle" probiert?
https://webpack.js.org/api/cli/

Thema: Wie füge ich im VSCode Referenzen auf System.Management hinzu?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Du könntest dir ein solches Template selber erstellen und als NuGet Paket bereitstellen.

Die dotnet CLI bietet solche Templates ja an. (Stichwort dotnet new -i)

Thema: Wie stelle ich Daten aus der DB als TreeView dar?
Am im Forum: GUI: WPF und XAML

Entschuldige, wenn ich deinen Code nicht komplett anschaue.

Erstelle ein Minimalbeispiel, an dessen du dir selber klar machst wie das funktioniert.

-> Du hast eine Datenhaltungsklasse (die aus deinem ersten Post)
-> Daraus erstellst du eine Objektstruktur, die anstatt einer UnterID das UnterObjekt hält (im View Model)
-> In der View erstellt du ein HierarchicalTemplate, dass die Root Node/Array deiner Objektstruktur per Datenbindung erhält und deren Kind Objekte an die Kindknoten weitergibt

Thema: Wie kann ich mit C# eine Anwendung für den Raspberry PI (Linux) programmieren?
Am im Forum: Rund um die Programmierung

Das .NET Ökosystem ist in den letzten Jahren stark gewachsen und die Dokumentation ist sehr gut. Allerdings, bei einem großen Ökosystem ist auch die Doku sehr groß.

Deswegen habe ich das auch so geschrieben und nicht einfach auf die Doku verwiesen.

Der Hintergrund ist, dass Windows Forms auf ActiveX (?) und WPF stark auf DirectX angewiesen sind und die gibt es eben nur für Windows.
Mono hat eine eigene Implementierung von Windows Forms gemacht, die auf GTK (glaube ich) basiert und damit Crossplattform.

Thema: Wie kann ich mit C# eine Anwendung für den Raspberry PI (Linux) programmieren?
Am im Forum: Rund um die Programmierung

Windows Forms (und auch WPF) benötigt zusätzlich zur .NET 5.0 Runtime auch noch die .NET Desktop Runtime. Diese gibt es nur für Windows.

Was du allerdings nutzen kannst sind Dinge wie Electron.NET oder Plattformen wie UNO (https://platform.uno/).


Edit: Aber ob du z.B. Netflix so einbinden kannst, wie du dir das vorstellst kann ich dir nicht sagen, vermute aber, dass es Netflix dir schwer machen wird, außer mit einem Browser.

Thema: Wie kann ich mit C# eine Anwendung für den Raspberry PI (Linux) programmieren?
Am im Forum: Rund um die Programmierung

Winforms unter Linux läuft nicht mit .NET 5.0. Das ist nur mit Mono möglich.

Thema: Wie stelle ich Daten aus der DB als TreeView dar?
Am im Forum: GUI: WPF und XAML

Wenn du das in der Form binden willst muss die Property "UnterID" ein Objekt zurückgeben, dass dem SubItem entspricht.

Die Schicht, die du beschreibst ist die Datenhaltung (Schlüssel & Fremdschlüssel in einer SQL zum Beispiel). Das, was du aber für die UI brauchst ist eine aufgebaute Datenstruktur. Du musst die Abhängigkeiten auflösen.

Siehe auch: [Artikel] Drei-Schichten-Architektur

Thema: Wie füge ich im VSCode Referenzen auf System.Management hinzu?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Du musst es als NuGet Paket Referenz hinzufügen.

Via

dotnet add package
es wird dann als Eintrag in deiner *.csproj hinzugefügt.

Thema: Wie stelle ich Umlaute in einer CSV richtig dar? Und wie lese ich die Dateinamen ein?
Am im Forum: Grundlagen von C#

Beim IIS ist das Stichwort AppPool. Der AppPool bekommt einen User.

Thema: DP Injection 'AddSingleton()' Überladung mit implementationFactory
Am im Forum: Rund um die Programmierung

Das was du da machst ist unnötig kompliziert.

Deine LoginViewModelFactory scheint ja ISimpleTraderViewModelFactory<LoginViewModel> zu implementieren. Du müsstest also einfach folgendes machen:


services.AddSingleton<ISimpleTraderViewModelFactory<LoginViewModel>, LoginViewModelFactory>();

Zusätzlich musst du noch den Typ ViewModelFactoryRenavigator<HomeViewModel> registrieren.
Dann kannst du dir den komplexen Aufruf sparen.

Thema: Wie kann man das "System.Speech Paket" in VS einbinden (2017 Express bzw 2019 Professional)
Am im Forum: Grafik und Sound

Wenn VS das nicht in der Auswahl hast, solltest du das auch direkt referenzieren können. Ein NuGet Paket (offizielles) gibt es glaube ich nicht.

Schau mal unter C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework

Thema: Wie kann man das "System.Speech Paket" in VS einbinden (2017 Express bzw 2019 Professional)
Am im Forum: Grafik und Sound

Du musst weiterhin die Referenz mithilfe von Visual Studio einbinden, so wie du das auch mit VS 2010 gemacht hast.
Danach kannst du es in deinem Projekt verwenden. Inklusive des usings.

Thema: Herangehensweise beim Laden von Bilder mit unüblichen Format
Am im Forum: Rund um die Programmierung

Da müsste man zusätzlich die Lizenzbedingungen des Datenformats beachten.

Thema: Herangehensweise beim Laden von Bilder mit unüblichen Format
Am im Forum: Rund um die Programmierung

Binärdateien haben keine Zeilen. Du kannst also nichts zeilenweise einlesen :)

Prinzipiell musst du die Datei parsen und in ein für dich verarbeitbares format umwandeln. Dafür musst du die in dem pdf beschriebenen Blöcke verarbeiten. Ein Block nach dem anderen.
Alternativ suche nach einem Konverter oder einer entsprechenden Bibliothek.

Thema: Wie kann ich ein DataGridView als Parameter in einer Funktion verwenden?
Am im Forum: GUI: WPF und XAML

Welche Config Datei?

In deiner Oberflächenbeschreibung (=XAML), bzw dem View sollte die Repräsentation des Zeitstempels gesteuert werden.

P.S.:
So wie du TryParse..() verwendest ist es falscht. Nicht umsonst unterscheidet sich TryParse...() von Parse...().

P.P.S.:
Du übergibst ein Objekt dessen Typ du weißt trotzdem Boxed an deine convertDateTime Methode als object.
Dadurch bekommt die convertDateTime Methode mehr Aufgaben, als ihr Name aufzeigt und du bist in zweiter Instanz Typunsicher... was passiert, wenn sender in convertDateTime nicht vom Typ DataGridView ist?

Thema: Wie kann ich ein DataGridView als Parameter in einer Funktion verwenden?
Am im Forum: GUI: WPF und XAML

Was genau du vor hast wird mir nicht ganz klar.

-> Wozu brauchst du das DGV, wenn du immer convertedDateTime zurück gibst?
-> Ich bin nicht sicher, was in sender drin steht, aber es müsste etwas vom DGV sein

In WPF solltest du MVVM verwenden. Hier kannst du dann das notwendige als Parameter binden.

Thema: myCSharp wechselt die Plattform
Am im Forum: Ankündigungen

Um noch einmal in die gleiche Kerbe zu schlagen. Das Forum geht schon lange den Weg, keine fertigen Lösungen auf Fragen zu produzieren, sondern die Mitglieder entsprechend so aufzuschlauen, dass sie die Lösungen selber erstellen können.

Das gleiche ist, die verwendeten Pattern zu erklären, anstatt eine fertige Lösung hinzuklatschen.
Es bringt dem einzelnen wesentlich mehr ein verstehen aufzubauen und eigene Fehler zu machen, als zu versuchen etwas fertiges zu kopieren und die gemachten Fehler nicht zu verstehen :)
Aber auch das ist ein Lernprozess.

Thema: Funktionsaufruf mittels Templateobjekt
Am im Forum: Grundlagen von C#

Was du da machst sieht schon sehr abenteuerlich und kompliziert aus.

Du kommst von PHP - richtig? Schau dir am besten die Grundlagen und Pattern von C# an.

Zu deinem Problem:
Aktuell kann jeglicher Typ als TList genutzt werden. Wenn du dort eine update-Methode haben willst, musst du den Typen einschränken, auf entweder einen Typen, der update implementiert hat oder ein Interface, dass dieses vorschreibt.
Das geht über Generic Constraints.

Edit: oh sorry.. exakt der gleiche Link :)
Einfach nochmal den Link durchlesen... den Punkt mit dem where ...

Thema: Wie kann ich alle Mikrocontroller im Netzwerk suchen?
Am im Forum: Netzwerktechnologien

Wenn deine µC sich per DHCP eine IP holen... kannst du die Informationen evtl. von deinem DHCP Server auslesen?
Eine z.B. Fritzbox hat dazu eine passende API: https://avm.de/service/schnittstellen/
Gibt auch hier im Forum jemanden, der eine passende Bibliothek geschrieben hat, ob die die notwendige Heimnetzgeräte API implementiert kann ich dir aber nicht sagen.

Thema: Wie kann ich mit WPF über WebService auf eine Datenbank zugreifen?
Am im Forum: Datentechnologien

Sofern dein NAS System es unterstützt könntest du eine API auch in C# entwerfen und so verbinden.

Thema: Wie entwickelt man eine MMVM Anwendung, wenn Tasks abhängig von Tasks sind?
Am im Forum: Grundlagen von C#

Intern erstellt der Compiler aus jedem await eine Statemachine.
Da gibt es sicher einige Blog Posts oder Artikel darüber, wie das genau funktioniert.

Für dich erscheint es aber so, dass das warten auf eine async Methode (await) dazu führt, dass diese im Hintergrund ausgeführt wird und der Verarbeitungsschritt dann an den Rückgabepunkt zurückspringt.
Insofern ist es wunderbar möglich await's untereinander zu schreiben.

In diesem Beispiel, bei AddCustomerToDb: Wenn der Task "AddCustomerToDb" abgearbeitet ist, springt die Ausführung wieder zu dieser Zeile und die variable customer steht zur verfügung. Danach wird "AddCustomerAddress" abgearbeitet.
Also für den Programmierer kein Unterschied zu sequentieller Programmierung.


public async Task AddCustomer()
{
  var customer = await AddCustomerToDb(); //Task<Customer> 
  await AddCustomerAddress(customer, address); // Task
  await AddCustomerToProject(customer, 1); // Task
}

Auch funktionieren würde z.B. ein .ContinueWith().

Das Task.Run wirst du dir vermutlich dort sparen können, wenn die aufgerufene Methode sowieso schon einen Task zurückgibt.

Thema: Wie entwickelt man eine MMVM Anwendung, wenn Tasks abhängig von Tasks sind?
Am im Forum: Grundlagen von C#

eine async Methoden ohne Rückgabewerte (void) können zu Race conditions führen. Nutze besser async Methoden, die einen Task zurückgeben.

Du kannst auch in einer inline Funktion await nutzen, in dem du diese als async markierst.


var func = async () => {
  await ...;
  await ...;
}

await func;

Je nachdem, was du genau machen möchtest gibt es unterschiedliche Herangehensweisen an das Problem. Angefangen von kompletten Frameworks, die dir die Arbeit abnehmen über Mediation (CQRS via MediatR) bis hin zu simplem ausprogrammieren der Abhängigkeiten.
Was passt hängt davon ab, wie deine Anforderungen aussehen.

Dein Beispielcode sieht aber nach Schichtenverletzung aus. Datenbankzugriff sollte nicht in der Datenbank erfolgen.

P.S.: ist mir erst am Ende aufgefallen... willst du nur mehrere await's in einer Methode ausführen? Das funktioniert doch Problemlos..

Pseudo Code:


public async Task AddCustomer() 
{
  var customer = await AddCustomerToDb();
  await AddCustomerAddress(customer, address);
  await AddCustomerToProject(customer, 1);
}

Thema: RESTful Webservices entwickeln außerhalb von Microsoft Visual Studio
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Nur, damit es hier steht: Für VSCode muss kein Nutzerkonto angelegt werden.

Es gibt Features, die mit einem Nutzerkonto besser funktionieren (z.B. LiveShare, Azure Integration oder GitHub Integration), aber dafür kann es z.B. auch ein u.U. GitHub Konto sein. Für das reguläre erstellen, ausführen und debuggen von Programmen auf Basis von .NET 5 wird aber kein Konto benötigt.

Zu VSCode allerdings noch ein Satz:
Man fängt beim Programmieren gerne mit Konsolenanwendungen an, auf die man Abfragen legt. Das funktioniert mit einem Standardprojekt von VSCode nicht und man muss es erst so konfigurieren, dass eine eigenständige Konsole geöffnet wird.

Thema: RESTful Webservices entwickeln außerhalb von Microsoft Visual Studio
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi Jaftali,

ihr könnt problemlos Visual Studio Code einsetzen und damit Webservices auf Basis von ASP.NET Core (bzw. auf .NET 5.0 Basis) erstellen.
Allerdings kann Visual Studio Code nicht mit den Desktop Frameworks WPF und Windows Forms umgehen.

*Edit: Visual Studio Code ist frei verfügbar!