Laden...
T
T-Virus myCSharp.de - Experte
Entwickler noobie :D Nordhausen, Nörten-Hardenberg Dabei seit 17.04.2008 2.224 Beiträge
Benutzerbeschreibung

Forenbeiträge von T-Virus Ingesamt 2.224 Beiträge

18.04.2024 - 12:58 Uhr

Was du da machst, ergibt keinen Sinn?
Erst instanzierst die Variable prodDataProfinet neu um diese dann mit der Referenz von prodData zu überschreiben.
Dadurch wirfst du die neue Referenz von prodDataProfinet weg und arbeitest du die Zuweisung von prodData zu prodDataProfinet über die gleiche Referenz auf prodData auch wenn du mit prodDataProfinet arbeitest.
Dadurch verändert sich bei der letzten Zeile in prodData auch die prodSW zu Null.

Die Übergabe mit ref kannst du dir sparen, wenn du prodData nicht überschreibst sondern nur die Properties änderst.
Dies wäre nur nötig, wenn du den Parameter auf null setzen willst oder mit einer anderen Instanz/Wert überschreiben willst.
Ist in dem Fall aber nicht zu erkennen!

Nachtrag:
Anbei ist es nicht ratsam für Variablen den gleichen/ähnlichen Namen zu verwenden, wie für Methoden.
Dadurch kommt man beim lesen auch gerne durcheinander.

T-Virus

17.04.2024 - 11:08 Uhr

Wenn du den Code von dem Service und dem Task ändern kannst, dann würde ich auch weg von der Ini Datei gehen.

Diese haben im .NET Umfeld eigentlich kein Existenzrecht mehr, dafür gibt es entweder die App.config (XML) oder die appsettings.json (JSON)

Damit würdest du vermutlich besser fahren, da beide Formate gut dokumentiert und auch die Klassen zum lesen/schreiben direkt teil von .NET sind.

Damit wäre deine Anwendung übrigens auch portierbar, da du aktuell an den Win32 Apis hängst.

Entsprechend wäre z.B. ein Wechsel zu anderen Platformen wie Linux nicht umsetzbar.

T-Virus

16.04.2024 - 09:57 Uhr

Klingt dann entweder nach falschem Klassenaufbau oder dein Authorization Header ist falsch.

Bzw. kann auch dein Json falsch sein, beachte hier, dass die Properties richtig serialisiert werden bzw. mit dem richtigen Schreibweise.

Per Default werden die Properties 1:1 wie sie geschrieben werden, serialisiert.

Hier braucht json aber einen kleinen Anfangsbuchstaben, entsprechende Einstellungen kannst du aber mitgeben.

Ggf. brauchst du im Header auch den Bearer mit dem Api Token.

Muss aber in der jeweiligen Api Doku stehen.

T-Virus

14.04.2024 - 10:53 Uhr

Hier muss man erstmal abwarten ob die CPUs auch leisten können, was man von ihnen erwartet.

Ebenfalls mus der Preis passen.

Niemand wird sich Windows Hardware/Software für Apple Preise kaufen, dann kann man auch direkt ein MacBook nehmen.

Und die Softwareauswahl muss dann auch erstmal reifen und zeigen ob sie ihren x86 Pendanten in nichts nachsteht.

Erst wenn das Ökosystem sich angleich, kann sich ARM auch mit Windows durchsetzen.

Gerade im mobilen Bereich wäre das mit Energie effizienten CPUs eine Verbesserung.

Mal schauen wie sich das Thema entwickelt.

T-Virus

12.04.2024 - 10:46 Uhr

Kommentarfunktion für News scheint kaputt zu sein.

Wollte gerade einen kurzen Kommentar zur News mit dem neuen Solution Format schreiben.

Folgende Meldung wwird nach dem Absenden angezeigt.

Der Kommentartext muss mindestens 1000 Zeichen lang sein.

Ist etwas lang für einen Kommentar.

Ggf. falsche Validierung bei Länge?

01.03.2024 - 13:05 Uhr

Web Server auf Endgeräten hosten ist keine gute Idee.

Soweit mir dies von der letzten Diskussion in Erinnerung geblieben ist, blockt Apple dies auch aktiv.

Warum nutzt du keine richtige Anwendung bzw. hostet direkt ein Web und rufst die Anwendung dann nur im Browser auf?

Ich halte diesen Ansatz auch nicht für zielführend bzw. technisch am sinnvollsten wenn es eben Alternativen gibt.

Nachtrag:

Hab sogar deinen alten Foren Thread gefunden:

https://mycsharp.de/forum/threads/125403/lokal-hosten-eines-https-server-auf-net-maui?page=1#forumpost-3839954

Achte auch hier auf den ersten Kommentar von Abt!

T-Virus

28.02.2024 - 12:31 Uhr

Ist für mich halt eine Red Flag, weil dies auch auf einen Entwicklungsstopp oder einfach ein Ende des Projekts hindeutet.

Das es die Mehrheit der Nuget Pakete betreffen würde denke ich auch, hab schon einiges veraltete oder tote Pakete gefunden.

Aber 99% halte selbst ich für zu hoch oder hast du eine Statistik dafür?

Warum .NET selbst?

Es geht mir nur darum, dass es ein einziges Open Issue gibt was seit Jahren rumgammelt und es auch seit 4 Jahren kein comitt mehr gibt.

Das zusammen zeigt mir, dass das Projekt im Grunde tot ist bzw. sich nichts mehr tut.

Bei .NET und den meisten Projekten gibt es auch offene Issues die teilweise Jahre offen sind, diese werden aber i.d.R. noch weiterentwickelt weshalb die Prioritäten so das andere Issues vorang haben.

T-Virus

28.02.2024 - 08:54 Uhr

Mit einem Open Issue von 2018 würde ich das Paket sicherlich nicht installieren.

Mir ist auch aktuell der Kontext nicht klar, wie das Paket jetzt die Kommunikation mit einem 3D Drucker lösen soll.

Wenn dieser auch keine Software Schnittstelle (API) anbietet, kann man diesen auch nicht ansteuern.

Erste Anlaufstelle wäre eher beim Hersteller des Geräts anzufragen ob es eine entsprechende Api gibt.

Ohne diese kann man sich jede weitere Suche sparen.

T-Virus

18.02.2024 - 10:53 Uhr

Kommt halt darauf an was dein Ziel ist.

Wenn du z.B. ein SPA planst, dann machen Frameworks wie Vue und co. schon Sinn und dann brauchst du eben nur die Api auf Server Seite.

Wenn du aber eine Anwendung planst, die auf Seiten verteilt ist wie z.B. mit Razor Pages und auch Serverseitige alles gerendert werden soll, dann kannst du auch mit Razor Pages gut arbeiten.

Was ich bisher gelesen habe klingt wie eine SPA und damit bräuchstest du Serverseitig nur die API.

T-Virus

18.02.2024 - 10:17 Uhr

Das "normale" .NET ist das .NET Framework, was aber im Grunde keine Zukunft mehr hat.

Es wird im Grunde nur noch für Legacy Software am Leben gehalten, der Rest hat sich mit .NET Core bzw. jetzt .NET 8+ schon weiterentwickelt.

Auf das .NET Framework sollte man bei Neuentwicklungen nicht mehr aufsetzen, wenn man keinen driftigen Grund hat.

T-Virus

18.02.2024 - 09:49 Uhr

Einen guten Anfang kann man bei der Doku von ASP .NET machen.

Mir ist aber nicht klar woher die News mit Blazor sei tot kommt.

Wird von Microsoft nicht mal im Ansatz in der Doku erwähnt.

Blazor ist auch nur eine Möglichkeit, wie man Web Anwendungen entwickelt.

Gibt auch noch andere Ansätze wie z.B. mit Razor Page.

Kannst du dir in der Doku mal anschauen.

Link:

https://learn.microsoft.com/de-de/aspnet/core/tutorials/choose-web-ui?view=aspnetcore-8.0

T-Virus

15.02.2024 - 11:51 Uhr

Wenn du die Lib verteilst, dann sollte der User der Lib entscheiden wann er etwas loggt.

I.d.R. machen das auch alle mit bekannten Libs so, dass dort der User einen entsprechenden Logger mitgeben muss um Ausgaben zu bekommen.

Ein Beispiel dafür ist z.B. StackExchange.Redis wo über Injection dann die Nullable ILogger Instanz mitgegben wird.

Wenn diese nicht gesetzt ist, dann wird auch nichts geloggt.

Da du auch nicht wissen kannst in welchen Umgebungen deine Lib verwendet wird, wäre es fatal wenn du dort Vorgaben mit nötigen Logging hast.

Ggf. läuft deine Lib in einer Anwendung im Embedded Bereich, dann wäre auch Logging ggf. gar nicht möglich oder nur im kleinen Bereich.

T-Virus

09.02.2024 - 20:15 Uhr

Mal von der schlechten Formatierung abgesehen, ist das kein C# sondern C++ Code.

Ist das falsche Forum bzw. die falsche Programmiersprache.

T-Virus

02.02.2024 - 11:22 Uhr

Literatur über .NET bzw. C# Fullstack wirst du keine finden, dafür sind die Bereiche für die du C# und .NET einsetzen kannst einfach zu groß.

Du kannst aber für .NET 6 einige brauchbare Bücher finden.

Z.B. hab ich folgendes, was ich immer mal wieder lese.

Dort sind zwar alle Bereiche angeschnitten, aber keins zu 100% abgedeckt.

Ist auch kaum möglich bei der Fülle an Möglichkeiten.

Ansonsten hilft aber auch die Doku für ASP .NET Core als Einstieg.

Link:

https://www.amazon.de/NET-Grundlagen-Profiwissen-Rezepte/dp/3446469303/ref=sr_1_3?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2E14PY5EZ88ZF&keywords=C%23+Buch&qid=1706869248&sprefix=c%23+buch%2Caps%2C96&sr=8-3

T-Virus

09.01.2024 - 16:05 Uhr

Ah okay.
Kann man ggf. einen Hinweis oder Warnung anzeigen, wenn man im Text ein Zeichen hat ohne entsprechendes Quote?
Bei langen Texten/Antworten geht sonst was verloren und man merkt es nicht.

T-Virus

09.01.2024 - 15:44 Uhr

Hab ggf. noch einen Fehler gefunden.
Beim schreiben einer Antwort mit dem Text List<blub> scheint die Antwort u.U. einen Filter/Parser anzuwenden, der dann die Zeile zerlegt.
Ist das ein bekanntes Problem?

Link:
https://mycsharp.de/forum/threads/125623/abstrakte-klasse-mit-listeadresse

Bei der Antwort werden Spitze Klammern scheinbar samt Inhalt entfernt.

Dadurch wird aus der List "<"T">" dann List.

Nachtrag:

Beim erstellen des Beitrags wird der Text entfernt, beim bearbeiten dann nicht mehr.

Scheint also ein Problem beim anlegen zu sein.

T-Virus

09.01.2024 - 15:29 Uhr

Beide Ansätze würde ich so nicht machen.
Ich würde einfach eine Property "Addresses" vom Typ List in die Basis Klasse einfügen.
Diese kann als auto Property auch direkt initialisiert werden z.B. mit dem Default Konstruktor von List.
Oder gibt es hier einen Grund für die Liste mit abstract zu markieren?

using System;
using System.Collections.Generic;
                    
public class Program
{
    public static void Main()
    {
        Teacher teacher = new Teacher();
        teacher.Addresses.Add(new Address());
        
        Student student = new Student();
        student.Addresses.Add(new Address());
    }
}

public class Address
{
    public string Postal { get ; set; }
    
    public string City { get ; set; }
    
    public string Street { get ; set; }
    
    public string Country { get ; set; }
}

public abstract class Human
{
    // Liste direkt bei Instanzierung erstellen lassen
    public List<Address> Addresses { get; set; } = new List<Address>();
}

public class Teacher : Human
{
    // Weitere Properties hier einfügen
}

public class Student : Human
{
    // Weitere Properties hier einfügen
}

T-Virus

12.12.2023 - 11:40 Uhr

Wenn du nur eine Seite hast, warum hast du dann nicht einfach ein Modell mit entsprechenden Properties mit allen Daten?
Dieses Modell kann dann einfach zwei Properties haben, jeweils für Person und Animal.
Dann kannst du Combine einfach als getter umsetzen, der dann die Anzeige liefert.
Oder denke ich gerade zu einfach?

T-Virus

11.12.2023 - 11:11 Uhr

Hab mir den Code angeschaut und muss Th69 sowie Abt beipflichten.
Du arbeitest hier im Grunde komplett an WPF vorbei.
In deiner Page.xaml.cs stehen auch am Ende sämtliche Klassen, die du dort nutzt.
Die .cs Datei ist ein Paradebeispiel wie man es in WPF und auch in C# im allgemeinen nicht macht.
Schau dir die Artikel für "MVVVM und DataBinding" sowie Drei-Schichten-Architektur umbedingt an, damit du dort eine saubere Trennung zwischen Code und UI hinbekommst.

An sonsten bleibt auch der Blick in die Doku von Microsoft selbst immer ein wichtiger Einstiegspunkt in solche Themen.
Diese solltest du neben den Artikeln ebenfalls durchlesen und ggf. mit kleinen Testprojekten erstmal verinnerlichen.
Sonst wirst du bei WPF nicht glücklich und zukünftig nur noch Krücke und Krücke bauen, da du am Grundkonzept vorbei arbeitest.

Doku:
https://learn.microsoft.com/de-de/dotnet/desktop/wpf/getting-started/introduction-to-wpf-in-vs?view=netframeworkdesktop-4.8
https://learn.microsoft.com/de-de/dotnet/desktop/wpf/introduction-to-wpf?view=netframeworkdesktop-4.8

Nachtrag:
Weiterer Kritikpunkt ist auch, dass sich der Aufbau deiner Klasse unnötig wiederholt.
Entweder brauchst du mehr Abstraktion, also einen Basisklasse, oder es reicht eine Klasse für deine Varianten.
Dadurch sparst du vermutlich schon mehr als die Hälfte deiner Klassen aus.

Ebenfalls sind alle Properties in diesen Klasse nur stumpfe Strings.
Die Bezeichnungen wiedersprechend sich auch bzw. gibt es Konstruktore die bool entsprechen.
Dadurch wird der Code nicht nur unklarer, es nutzt auch unnötig mehr Speicher und du umgehst damit das Typsystem komplett.
Entsprechend kann sonst was in den Properties stehen, am Ende musst du dann noch zusätzliche Konvertierungen und Fehlerbehandlungen umsetzen.
Damit machst du dir zusätzlich unnötige Arbeit, die dir das DataBinding mit Eingabevalidierung abnimmt.

Im Code habe ich auch folgende Zeile gefunden:

ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

Für mich sieht das ganze aber nicht nach einem nicht kommerziellen Projekt aus bzw. sieht es nach einem Firmeninternen Projekt aus.

Ob dann die Lizenz hier korrekt ist, müsste ebenfalls noch geprüft/geklärt werden!

T-Virus

07.12.2023 - 18:31 Uhr

Und was genau ist das Problem bei deinem jetzigen Code/Ansatz?
Wenn du nicht sagst wo es Probleme/Fehler gibt, kannst du ewig auf eine Antwort warten.
Ebenfalls wirst du kaum für deinen Ansatz eine 1:1 Anleitung finden, da es vermutlich zig Ansätze gibt, die alle zum gleichen führen können.

Ansonsten wäre es ggf. hilfreich zu erklären was dein "Auto" sein soll.
Meinst du damit den nahtlosen Übergang zwischen Blazor Server und WebAseembly.
Dann wäre immer noch unklar was genau das Problem ist.

Anbei hast du oben die Doku bekommen.
Da hast du schon einen Ansatz, musst du nur mal lesen und schauen ob es für dich passt.
Beispiel gibt es dort auch.

T-Virus

06.12.2023 - 15:23 Uhr

Aus deinem Post geht nicht hervor was den das Problem bei der Migration ist.
Gibt es einen Fehler, fehlen Methoden etc.
Wenn nicht gerade zufällig jemand das gleiche Problem hat, dann dürfte es schwer werden dir zu helfen.

Ansonsten hilft immer der Blick in die Doku:
https://learn.microsoft.com/de-de/aspnet/core/blazor/security/?view=aspnetcore-8.0#authenticationstateprovider-service

T-Virus

01.12.2023 - 12:23 Uhr

Die Meldung sagt im Endeffekt, dass dein Control AddEmployeeButton bereits ein Unterelement eines anderen Controls ist.
Entsprechend musst du AddEmployeeButton erst entfernen und dann dem MainGrid wieder hinzufügen.
Ob das aber so sauber gelöst ist, würde ich erstmal bezweifeln.
Dann du musst dann auch wieder die Umkehrung des Ganzen umsetzen.
Ich habe da meine Zweifel, dass dies durch Code Behind sauber gelöst wird.
Ggf. müsste man dies über Styles umbrechen lassen können.

T-Virus

30.11.2023 - 13:22 Uhr

Da es bei dem Thema um eine Umstellung von lokaler APF Anwendung zu Cloud DB geht, muss man davon ausgehen, dass es hier einen Mehrbenutzerzugriff gibt.
Ich bezweifle, dass er für jede Installation eine eigene Datenbank einrichten wird/will.
Auch wird es nicht pro Gerät einen Benutzer geben.
Die Verwaltung + Kosten dürfte dann bei vielen Benutzern Kostenrahmen sprengen.
Entsprechend ergibt sich schon aus dem urspünglichen Vorhaben der Mehrbenutzer Zugriff.

Ansonsten hattest du übrigens selbst VPN in den Ring geworfen.
Das du dann keine zwei Antworten noch die Frage stellst, wer davon redet, ist auch eine wundersame Art das Thema zu leiten.

Der Lösungsansatz sowohl mit VPN sowie SSH führt aber zu dem gleichen Problemen, wie ich es oben schon angemerkt habe.
Auch dort kannst du den Datenabfluss überhaupt nicht kontrollieren.
Sobald jemand den Rechner karpert, kannst du genau 0 gegen einen Datenabfluss machen.
Da sich in dieser Situation auch noch alle den gleichen Zugang teilen müssten, wäre unmöglich irgendwas sinnvolles zu protokollieren.
Du lieferst also ohne eine Api vor der DAtenbank die DAten in jeder Form den Leuten mit Zugriff aus.

Eine Api bringt dann auch weitere Vorteile, die dir der rohe DB Zugriff nicht bieten kann.
Z.B. kann man in einer Api noch zusätzliche Authetifizierung sowie Authorisierung umsetzen.
Gerade Authorisierung kann u.U. durch eine Lizenzmodell bestimmte Zugriffe blockieren, was mit direkten Zugriff nicht möglich ist.
Ebenfalls sind Caching, Logging und weitere Möglichkeiten erst mit einer Api sauber machbar.

T-Virus

29.11.2023 - 14:01 Uhr

Wenn du bisher nur mit der DB auf dem gleichern Server gearbeitet hast, dann ist jetzt Zeitpunkt auf eine Api umzulernen.
Gute Ansätze dafür gibt es z.B. mit Microsofts Web Api mit Json als Format.
Entsprechende Anleitungen und Lernbeispiele gibt es auch in der Doku von Microsoft.

Doku:
https://learn.microsoft.com/de-de/aspnet/core/fundamentals/apis?view=aspnetcore-7.0
https://learn.microsoft.com/de-de/aspnet/core/tutorials/first-web-api?view=aspnetcore-7.0&tabs=visual-studio

Nachtrag:

@pollito
Den VPN Ansatz würde ich schon aus Kontrollgründen nie verwenden.
Wenn jemand Zugriff auf das VPN bekommt, was schon durch einen Rechner eine Benutzer passieren kann, dann wäre der Datenabfluss nicht kontrollierbar.
Da man dann durch das VPN in falscher Sicherheit gewiegt ist, macht sich kaum einer die Mühe mehr als Benutzer/Passwort zur DB zu konfigurieren.
Durch eine Api, ist der Zugang zur Datenbank sauber gesichert.
VPN zur DB ist also kein Ersatz für eine Api!

T-Virus

20.11.2023 - 16:06 Uhr

Der Code ist alles andere als lesbar und ohne Hintergrundwissen zum Aufbau der Datei nicht ganz klar.
Der Hintergrund scheint zu sein, dass es sich dabei um eine Job Liste für das Spiel Euro Truck Simulator 2 (ETS2) handelt.

Es wäre vermutlich einfacher, wenn du den Code umstrukturierst als am jetzigen festzuhalten.
Wenn der Aufbau der Job Einträge gleich ist, was dein StringBuilder Ansatz suggeriert, wäre es vermutlich sauberer eine eigene Klasse für die Jobs sowie zum lesen/schreiben der Liste jeweils eine Reader/Writer Klasse anzulegen.
Der Reader kann dir im einfachsten Fall aus der Datei die Jobs als Liste liefern, der Aufbau sollte im einfachsten Fall für alle Jobs gleich sein.
Der Writer kann diese Liste anch Anpassung dann sauber zurück schreiben.
Damit wäre dein Code sauber aufgeteilt und sollte nur gültige Jobs lesen/schreiben.

Wenn es sich nicht zufällig bei dem Format der Dateien um JSON handelt, könntest du sogar direkt über De/Serialisierung arbeiten z.B. mit System.Text.Json
Dann kannst du dir die Reader/Writer Klassen sparen, gibt es dann Quasi an Bord.

Nachtrag:
Könntest du eine Beispieldatei liefern bzw. eien Ausschnitt mit mehreren Jobs pasten?
Dann könnte man u.U. das Format ableiten, aber sieht sehr nach JSON aus.

T-Virus

20.11.2023 - 14:53 Uhr

Wenn du den Content der gesamten Datei in der Liste hast, ist es am einfachsten die Datei komplett neu zuschreiben.
Dann kannst du einfach mit File.WriteAllLines arbeiten und die Liste dann schreiben lassen.
Wäre die einfachere Lösung als selbst die passenden Zeilen ermitteln und zu schreiben.

Doku:
https://learn.microsoft.com/de-de/dotnet/api/system.io.file.writealllines?view=net-8.0#system-io-file-writealllines(system-string-system-collections-generic-ienumerable((system-string)))

T-Virus

03.11.2023 - 20:10 Uhr

Wozu willst du noch Windows XP als Zielplatform berücksichtigen?
Windows XP ist seit vielen Jahren ohne support, da würde ich keine 5 Min. für eigenen Software Support verschwenden.

async/await gibt es ebenfalls seit mehreren Jahren.
Wenn man nicht gerade mit uralten und nicht mehr supporteten .NET Versionen arbeitet, kommt man schon durch aktuelle Libs damit in Kontakt.
Entsprechend ist es heute recht schwierig sich um async/await zu drücken.

Abt hat dir alle wichtigen Mittel gegeben.

Wenn dir auf "Arbeit" weder Zeit zum debuggen noch in einfaches lesen der Doku gesteckt werden darf, dann ist dein Arbeitgeben kein Softwareentwickler oder IT Dienstleister.
Falls doch, dann kein ernstzunehmender.
Das gehört zu den grundlegenden Aufgaben einen Software Entwickler.

Wenn es hier um ein privates Projekt geht, dann solltest du dies auch in deiner Freizeit entwickeln.
Auf Arbeit muss man sich nunmal um die Arbeit kümmern, da ist kein Platz für private Projekte.

T-Virs

01.11.2023 - 19:41 Uhr

Anstelle von zwei Listen solltest du schauen ob ggf. eine andere Datenstruktur nicht besser wäre.
Z.B. bei einer reinen Prüfung ob Artikelnummern vorhanden sind, wäre HashSet<T> schneller als eine Liste.

Bei Listen muss immer umständlich über alle Einträge bis zu einem Treffer gesucht werden, was abhängig von der Menge  der Einträge und der komplexität der Suche enorm Zeit fressen kann.
Dann brauchst du nur das HashSet<string> und nur eine Schleife um die äußeren Artikel zu prüfen.

public class Artikel
{
    public string NR { get; set; }
    public bool Skip{ get; set; }
    public string Artikel { get; set; }
}

List<Artikel> artikelListe = new List<Artikel>();
HashSet<string> nummern = new HashSet<string>();

// Hier musst du deine Artikel einladen und das HashSet mit den Nummern füllen
// Die Schleife könntest du auch mit Linq vereinfachen, lasse ich hier aber aus für das einfachere Verständnis!

foreach(Artike artikel in artikelListe)
{
    if (!nummern.Contains(artikel.NR))
        artikel.Skip = true;
}

T-Virus

26.10.2023 - 08:37 Uhr

Dir fehlt einfach das große i vor dem Klassennamen.
Du bekommst hier von der Methode ein Interface vom Typ IFusedLocationProviderClient zurück.
Dies kann nicht implizit in einen konkreten Typen umgebogen werden.
Hier solltest du auch gegen das Interface arbeiten, nicht gegen konkrete Klassen.

Code:

IFusedLocationProviderClient   fusedLocationProviderClient = LocationServices.GetFusedLocationProviderClient(this);

Nachtrag:
Vermutlich hast du ein Java Beispiel genommen und einfach versucht 1:1 auf C# umzubiegen.
Bei Java werden Interfaces ohne führendes großes i geschrieben.

Deshalb gibt es z.B. Interfaces wie List<T>, Collection<T> etc.
Bei C# wären die Pendanten IList<T> oder ICollection<T> etc.

T-Virus

19.10.2023 - 15:14 Uhr

Als aller letzte Option bleibt dir noch per XmlTextReader die XML Datei selbst zu parsen.
Ist zwar etwas aufwändiger, dann kannst du deinen Fall aber umsetzen.
Zum schreiben kannst du dann auch wieder den XmlTextWriter verwenden.

T-Virus

18.10.2023 - 10:18 Uhr

Mir ist nicht ganz klar was du machen willst.
Willst du die Bytes des BOM mit auslesen?
Dann müsstest du als Kodierung Utf8Encoding selbst instanzieren und mitgeben.
Dort kannst du dann im Konstruktor mitgeben ob die BOM Bytes mitgelesen werden sollen.
Macht aber kaum Sinn die zu lesen, da diese dann auch selbst beim verarbeiten aussieben müsstest, was .NET hier schon für dich macht.
Beim schreiben der Daten, kannst du dann Utf8Encoding wieder mit passenden Parametern mitgeben damit die BOM Bytes wieder geschrieben werden.

Doku:
https://learn.microsoft.com/de-de/dotnet/api/system.text.utf8encoding?view=net-7.0

T-Virus

16.10.2023 - 09:41 Uhr

Die Methode UseSqlServer bekommt hier den ConnectionString.
Dieser wird im Beispiel scheinbar aus den ConnectionStrings aus der appsettings.json übernommen.
Im ConnectionString stehen dann für die Verbindung alle Informationen, wie Datenbank/Server/Benutzer/Passwort und Einstellungen z.B. für Verbindungspooling.

Link:
https://learn.microsoft.com/de-de/ef/core/dbcontext-configuration/

Deine zweite Frage stehe ich nicht ganz.
Was genau willst du mit dem Model der View (machen)?

T-Virus

14.10.2023 - 14:42 Uhr

@Th69
Stimmt, ist aber nicht verkehrt auch den zu haben 😃
Die Doku zu ASP .NET ist dort auch verlinkt unter "Entwickeln von .NET-Apps"/"Erstellen von Web-Apps mit ASP.NET Core"
Damit findet man auch aif die Unterseite für ASP .NET.

T-Virus

14.10.2023 - 12:49 Uhr

Dann dürften dir die beiden Links enorm helfen.
Schau dir aber auf jeden Fall auch ADO .NET noch an, damit du auch ein Verständnis für die Abläufe bei OR Mappern wie eben Entity Framework bekommst.

T-Virus

14.10.2023 - 12:24 Uhr

Tut mir leid dich enttäuschen zu müssen, aber den Code werden wir dir hier nicht schreiben.
Dafür gibt es massig Anleitungen sowie die offizielle Dokumentation.
Stichwort sind hier ADO .NET, OR Mapper und Entity Framework.
Beim Thema ASP .NET gibt es auch von Microsoft selbst eine Doku, die alles dazu abhändelt.

Link:
https://learn.microsoft.com/de-de/dotnet/
https://learn.microsoft.com/de-de/ef/core/

T-Virus

11.10.2023 - 22:15 Uhr

Wenn du gefühlt 5 Themen auf machst, die im Grunde immer die gleichen Fragen stellen und du sämtliche Links und Hinweise ignorierst, dann kann man dir auch nicht mehr helfen.

Das Forum ist auch nicht dazu da dir als persönlicher Lehrer zur Seite zu stehen.
Die meisten hier haben sich diese Erfahrung durch Jahre langes einarebiten mit lesen, Videos schauen und probieren beigebracht.
Wenn man diese Ansätze aber links liegen lässt und imer wieder von anderen Lösungen erwartet ohne selbst was zu machen/lernen, braucht man sich nicht wudern wenn man die gleichen Antworten und Hinweise bekommt.

Anbei kannst du dir auch gerne einen anderen Spielplatz suchen.
Es gibt bestimmt genug Leute, die ihre freie Zeit damit verschwenden wollen, unwilligen die gleichen Antworten und Hinweise auf die gleichen Fragen zu geben.
Ich habe jeden Falls keinen Lust darauf, die deine nächsten 5 Fragen zum Thema Mergen von DLLs zu beantworten.
Link zur Doku. findest du ebenfalls bei google 😉

T-Virus

11.10.2023 - 21:24 Uhr

C++ hat keinen direkten Pendant für decimal.
Das hättest du auch kur bei googel suchen können.

Link:
https://stackoverflow.com/questions/64565151/whats-the-c-equivalent-of-cs-decimal-type

Ansonsten verstehe ich auch den zweiten Teil nicht.
Was willst du wie/wohin mergen?
Klint im Kern wieder nach der gleichen Frage aus deinem anderen Thread, den Abt dir schon beantwortet hat.

Link:
https://mycsharp.de/forum/threads/125490/ist-virtualisierung-ein-guter-schutz-fuer-csharp-code?page=1#forumpost-3840453

T-Virus

05.10.2023 - 12:27 Uhr

Ich bin nicht wirklich sicher ob du dazu was finden wirst.
Zum einen ist die Anforderung hier recht spezifisch aber auch teilweise sehr schwammig, was kaum jemand in der Form als eigene Lib umsetzen dürfte.
Falls du nur wenige Objekte hast, würde ich das einfach direkt über Linq abfrühstücken.

Die Filterungen kannst du auch ohne Reflection umsetzen.
Dazu kannst du dir auch entsprechende Extension Methoden anlegen und z.B. ganz Dumm per switch dann die Filter setzen.
Den Reflection Ansatz würde ich nur machen, wenn die Anzahl der Klassen + Properties hoch wäre und einzelne Filter Methoden zu Aufwädnig wären.

T-Virus

05.10.2023 - 12:23 Uhr

@M.L.
Mit zu hoch meint Ralle77 vermutlich, die ganzen Konzepte die ihm entgegen geworfen wurden.
Ich halte z.B. WPF mit MVVM alleine schon für den absolut falschen Weg um jemanden in die Software Entwicklung zu bringen.
Allein WPF mit MVVM erfordert schon ein sehr gutes Verständnis von OOP und auch einigen Design Patterns wie Command, Oberserver etc.
Dies ist gerade für einen absoluten Anfänger einfach eine zu hohe Hürde.

Von daher würde ich eher den Ansatz einer Konsolenanwendung oder ggf. Winforms empfehlen.
Dort kann man sich dann mit den Konzepten der Sprachen und cp. vertraut machen ohne sich um MVVM, Architektur etc. Gedanken zu machen.
Ebenfalls kann man für kleine Tests auch die dotnet Fiddle verwenden um Online etwas rumzutesten.

T-Virus

29.09.2023 - 08:00 Uhr

Warum bastelt du überhaupt am Transaktionsprotokoll rum?
Damit kannst du dir u.U. den SQL Server zerschießen.
Beachte den Hinweis im Link.

Wenn dir der Speicherplatz auf C ausgeht, dann häng eine eigene Platte ein und verlagere den Pfad des Transaktionsprotokoll über den SQL Server dort hin.
Die Systemplatte würde ich auch nicht für den SQL Server für die Daten oder Transaktionslog verwenden, da beide je nach Auslastun stark anwachsen können.

Du könntest bei deinem Server auch das Transaktionslog auf Minimal stellen, dann dürfte es auch nicht so schnell wachsen.
Ebenfalls sollte man das Shrinken des Logs auch nicht regelmäßig z.B. als Wartungsaufgabe laufen lassen.
Dies kann einen negativen Impact auf den SQL Server haben!
Siehe dazu den zweiten Link.

Link:
https://learn.microsoft.com/de-de/sql/relational-databases/logs/the-transaction-log-sql-server?view=sql-server-2017

https://learn.microsoft.com/de-de/sql/relational-databases/logs/manage-the-size-of-the-transaction-log-file?view=sql-server-2017

T-Virus

19.09.2023 - 19:20 Uhr

DLL + Netzlaufwerk ist schon fatal falsche Richtung.
Anwendungen oder DLLs sollte man schon aus Sicherheitsgründen nicht über Netzwerklaufwerke laden/einbinden.

Wenn deine Anwendung nur eine Shell ist, die eigentliche Logik aber in den DLLs liegt, dann muss keine Neuinstallation erfolgen.
Hier würde ein einfacher Updater reichen, der dann nur die DLLs updaten muss.
Ist im groben und ganzen der gangbarere Weg als über Netzlaufwerke.

Dadurch sparst du dir auch den Krampfhaften Ansatz per Reflection zumaufrufen deines Codes.
Kannst du dann ganz normal wie oben im Link gezeigt umsetzen.

Nachtrag:
Falls dein Fall mehr in Richtung Plugin System geht, wegen der Einbindung der DLLs per klick, dann
In der Doku gibt es dazu auch ein Beispiel, wie man es umsetzen kann.

https://learn.microsoft.com/de-de/dotnet/core/tutorials/creating-app-with-plugin-support

T-Virus

19.09.2023 - 17:12 Uhr

Warum fügst du die DLL nicht als Referenz in dein Projekt ein und arbeitest dann direkt gegen die Klassen?
Dein jetziger Ansatz via Reflextion ist hier doch eigentlich unnötig.
Schau dir ggf. mal die Doku zu dem Thema an, da wirst du eigentlich fündig.

Doku:
https://learn.microsoft.com/de-de/dotnet/standard/class-libraries

https://learn.microsoft.com/de-de/dotnet/core/tutorials/library-with-visual-studio?pivots=dotnet-7-0

T-Virus

19.09.2023 - 13:08 Uhr

Wenn ihr z.B. wegen Kompatibilität nicht den TCP Part wegsägen könnt, würde ich einen TCP Server vor den Service schalten.
Der Kunde arbeitet dann wie bisher gegen einen TCP server und der TCP Server kommuniziert dann mit dem eigentlichen Service.
Dadurch kann der Kunde wie bisher gegen einen TCP Endpunkt arbeitet, der dann gegen die eigentliche Schnittstelle in Form des Service arbeitet.

Nachtrag:
Abts Antwort fasst es auch gut zusammen.
Hab in den letzten Jahren auch den Wechsel hin zu Microservices und wieder weg beobachtet.
Hier müsst ihr natürlich vorab prüfen ob diese bei euch zielführend wären.
Z.B. muss man auch immer die einzelnen Latenzen, die sich durch die Microservices ergeben, bedenken.
Ebenfalls müsstet ihr prüfen ob das Konzept der Microservices hier einen Mehrwert bietet wie z.B. Skalierung oder Ausfallsicherheit duch Verteilung der Services auf mehrere Systeme.

T-Virus

18.09.2023 - 12:51 Uhr

Und genau das meinte ich damit, dass du dir ein passendes Datenmodell anlegen solltest.
Dann kannst das ganze auch erst sinnvoll und mit den vorgesehen Techniken umsetzen.
Hättest du doch gleich drauf kommen können oder?

Nachtrag:
Das entspricht dann auch dem Konzept der Projektion wenn man gegen Relationalen Datenbanken arbeitet.

T-Virus

18.09.2023 - 09:29 Uhr

Und was spricht dagegen, dir ein eignes Modell für die View anzulegen anstelle mit deinen Entitäten zuarbeiten?
Dann hättest du auch gleich die Eigenschaft mit dem Namen und kannst danach sortieren.
Aktuell müsstest du ja zwangsweise genau den Weg mit einer vorsortierten Datenquelle gehen, wenn du kein passendes Datenmodell für die Anzeige verwendest.

Anbei verwendest du hier XML Dateien auch als Ersatz für eine Relationale Datenbank.
Hier könntest du auch leicht auf Sqlite als lokale Datebnbank umsteigen, aber das ist ein anderes Thema.

T-Virus

17.09.2023 - 21:12 Uhr

Im einfachsten Fall in dem du einfach die richtige Porperty angibt.
Wenn du keine dafür hast, dann leg doch eine an.
Warum brauchst du überhaupt eine extra Methode dafür?
Klingt nämlich nach einem fehlerhaften Datenmodell.

T-virus

13.09.2023 - 15:54 Uhr

@Alftor
Ah ok, übersehen das die Assembly WindowsBase ist.
Seltsam, dass Microsoft hier von der Namenskonvention abgewichen ist.
Dann sollte es eigentlich passen, wenn die Referenz und der richtige Namespace als using drin sind.

T-Virus

13.09.2023 - 15:50 Uhr

Okay, mein Fehler.
KeyEventArgs gibt es auch in WinForms, dann aber mit dem KeyCode.

Ansonsten sieht der Code soweit richtig aus.
Keine Ahnung was es mit WindowsBase zu tun hat, wenn die Doku selbst auf System.Windows.Input.Key verweist.
Entsprechend kannst du das WindowsBase using entfernen.

T-Virus

13.09.2023 - 15:22 Uhr

Die Referenz allein reicht ja nicht.
Du brauchst auch das using im Code dafür.
Bisher ist dein Code ziemlich mager und deshalb nicht erkennbar ob du das drin hast.

Nachtrag:
Das Problem dürfte sein, dass du mit Winforms arbeitest.
Key wird dir in dem Event bei KeyEventArgs auch als Fehler markiert.
Dort musst du gegen KeyCode arbeiten, was dann aber das Keys Enum verwendet.

Link:
https://learn.microsoft.com/de-de/dotnet/api/system.windows.forms.keys?view=windowsdesktop-7.0

T-Virus