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 LaTino
Thema: Events dynamisch auslösen
Am im Forum: Grundlagen von C#

Zitat von Brian_Piffler
Aber wie löse ich das in c#?

So:
Zitat
Momentan erhalten alle Objekte die Nachricht "BOB:Hallo" und checken dann ob Sie BOB sind. (der Name wir beim erstellen des Objektes festgelegt)

Events entkoppeln den Sender von den Empfängern. Der Sender hat also keine Ahnung, wer ihm alles zuhört. Entsprechend kann er auch nicht wissen, wen die Nachricht interessiert.

Was du möchtest, ist, dass der Sender eine Nachricht an einen bestimmten Empfänger schickt. Dafür musst du ihm den Empfänger bekannt machen, i.e. im einfachsten Fall als Member. Dafür ist die Kopplung dann wieder da.

Also entweder prüfen die Empfänger die erhaltene Nachricht (und erhalten u.U. Nachrichten, die nicht für sie bestimmt sind), oder der Absender stellt eine Schnittstelle zur Verfügung, mit der die Empfänger sich bei ihm so anmelden, dass er sie kennt und zuordnen kann. Eins von beiden.

LaTino

Thema: Mehrdimensionale Arrays mit verschiedenen Dimensionen
Am im Forum: Grundlagen von C#

Du musst gar nichts ausprobieren, der Quellcode der Methoden ist öffentlich zugänglich.


[ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
private static String[] InternalReadAllLines(String path, Encoding encoding)
{
    Contract.Requires(path != null);
    Contract.Requires(encoding != null);
    Contract.Requires(path.Length != 0);
 
    String line;
    List<String> lines = new List<String>();
 
    using (StreamReader sr = new StreamReader(path, encoding))
        while ((line = sr.ReadLine()) != null)
            lines.Add(line);
 
    return lines.ToArray();
}
Dein Einwurf mit using war daher Unsinn.

Dass man bei Dateioperationen möglichst prüft, ob die Datei da ist - geschenkt, das war aber auch weder Thema noch von dir moniert.

LaTino

Thema: App.config sinnvoll nutzen
Am im Forum: Rund um die Programmierung

Moah danke! Tomate, Augen. Danke!

Thema: Alternative multidimensionale Datenbak
Am im Forum: Grundlagen von C#

Benutze eine Liste aus flachen generischen Objekten, die aus den Koordinaten im n-Space bestehen.

LaTino

Thema: App.config sinnvoll nutzen
Am im Forum: Rund um die Programmierung

Zitat von Taipi88
Naja - deren GitHub-Seite nach ist das zur vereinfachten Nutzung - kann - es wird weder empfohlen noch abgeraten.

Nunja, da ILogger aber das Templatelogging nicht unterstützt, verstehe ich das so, dass man, wenn man das benutzen will, eben Log benutzen muss. Genau das vermute ich aber nur und wollte ich durch die Frage verifizieren :).

Ich meine das hier mit Templatelogging:
Zitat von Serilog wiki

// Don't:
Log.Information("The time is " + DateTime.Now);
Instead, always use template properties to include variables in messages:

// Do:
Log.Information("The time is {Now}", DateTime.Now);

Wenn es so ist, wie ich denke, würde ich vorerst auf dieses feature verzichten, da die Migration zu Serilog sonst zu aufwändig wäre.

LaTino

Thema: Wie schütze ich einen symmetrischen Schlüssel in meiner Anwendung?
Am im Forum: Rund um die Programmierung

Für sowas gibt's eigentlich asymmetrische Verschlüsselungen.

LaTino

Thema: App.config sinnvoll nutzen
Am im Forum: Rund um die Programmierung

Wo das Thema grad auf dem Tisch ist: verstehe ich Serilog falsch, oder wollen die wirklich, dass ich die statische Log-Klasse zum loggen benutze, statt mir einen ILogger zu injecten? Oder ist das nur, wenn man die deconstruction haben möchte (zB gemeinsam mit seq), und man kann ansonsten ganz beruhigt den gewohnten ILoggerFactory/ILogger-Weg gehen?

LaTino

Thema: Mehrdimensionale Arrays mit verschiedenen Dimensionen
Am im Forum: Grundlagen von C#

Zitat von lhyn
Sind den bei linq-Abfragen in Verbindung mit Dateizugriff die "using(...)" nicht nötig?
Habe hier im Forum mal gelernt, dass ich diese immer in ein using packen soll :D

Wo genau siehst du fehlende usings?

LaTino

Thema: Didaktisches Konzept in Foren: wie hilft man richtig?
Am im Forum: Smalltalk

pff.

Enumerable.Range(1,9).SelectMany(p => Enumerable.Range(1,9).Select(q => new {p,q, r=p*q })).ToList().ForEach(p => Console.WriteLine($"{p.p} * {p.q} = {p.r}"));
Womit wir beide bewiesen hätten, dass es bescheuert aussieht, wenn man darauf besteht, ein bestimmtes Werkzeug zu nutzen ;).

LaTino

Thema: Didaktisches Konzept in Foren: wie hilft man richtig?
Am im Forum: Smalltalk

Sind zwei Fragen, die man diskutieren kann:

[b] Wenn jemand etwas auf eine Art löst, die anders besser ginge, weil er die bessere Art nicht gelernt hat: bringt man ihm dann was Neues bei (zugegeben: schwierig in Foren) oder hilft ihm, sein Problem mit den ihm bekannten ungeeigneten Mitteln zu lösen? Und wenn man beides macht, welches Gewicht bekommt dann welche der beiden Alternativen?[/b]

Wir sind uns wohl einig, dass fertige Lösungen vorzusetzen kein Ansatz ist (wird ja nicht umsonst in der FAQ erwähnt). Man hätte also die Wahl, mehr oder weniger ausführlich eine Lösung zu besprechen, die man selber in einem Review nicht akzeptieren würde, oder auf die nach eigener Ansicht bessere Lösung hinzuweisen. Das Problem ist: wenn man Ersteres macht und Zweiteres anbietet, macht man es dem Fragenden leicht, die bessere Variante zu ignorieren. Der hat sein Problem gelöst, macht weiter wie gewohnt und kommt eine Woche später mit einem ursächlich identischen Problem wieder. Nichts gelernt, außer sich seine Lösung zusammen zu frickeln. Und so wird es weiter gehen.

Ich persönlich hätte aber gern, dass jemand das Forum hier auch nutzen kann, um Neues zu lernen. Ich lerne hier immer noch, auch ohne Fragen zu stellen. Und das würde ich nicht, wenn wir uns darauf beschränken würden, Probleme zu lösen. Im Gegenzug bietet man dort, wo man glaubt, eine bessere Lösung zu haben, diese auch an - Geben und Nehmen[*]. Ich halte es für wesentlich besser, das Toolset eines Fragenden zu erweitern, anstatt ihm zu zeigen, dass man alle Probleme mit demselben Hammer lösen kann (die Art Kollege kennt doch jeder. Und die will man eigentlich nicht haben).

[*] das beinhaltet auch, beim Geben mal hart daneben zu liegen. Ist eine Chance, was zu lernen ;).
[B]Was sollten Anfänger lernen?[/B]
Ich bin kein Freund des deutschen Bildungssystems im MINT-Bereich. Um einen alten Witz zu machen: "Was halten Sie von der deutschen Ausbildung im naturwissenschaftlichen Bereich?" - "Oh, das wäre eine gute Idee!"
Informatikunterricht gibt es in den Schulen jetzt seit fast 30 Jahren. Und ich kann meiner Tochter immer noch meine alten Lehrbücher zeigen, mit ihren vergleichen und finde kaum Unterschiede. Und das in der Informatik, dem Bereich, der sich am rasantesten entwickelt. (Wann genau wurde eigentlich das Lehramtsstudium "Informatik" eingeführt? Kann auch noch nicht sooo lange her sein. Die meisten Informatiklehrer sind Quereinsteiger, noch so ein Ding der Unmöglichkeit.)

Muss ein Schüler Arrays kennen? Unbedingt. Aber nur mit einem breiteren Verständnis davon, dass es verschiedene Weisen gibt, Daten zu speichern, und dass diese eine gemeinsame Basis haben, mit der man arbeiten kann. Wenn er das begriffen hat, kann man ihm das Array als Mutter aller Enumerables noch genauer erklären - aber erst, wenn er weiß, wie Projektionen funktionieren und dass Arrays eben nur eine Möglichkeit von vielen sind. Meinetwegen kann man dann auch noch erklären, was Zeiger sind und wie sie mit Arrays zusammenhängen. Aber sowas darf auch erst im Studium kommen. Wichtiger wäre es, wenn am Ende des Informatikunterrichts ein Grundverständnis von OOP vorhanden ist, und dazu gehört eben auch, um den Bogen zu schließen, dass man die Abstraktion "Aufzählung" verstanden hat und die Implementierung "Array" einordnen kann.

Und wenn jemand das nicht kann und hier ins Forum kommt, kann man durchaus versuchen, diese Wissenslücken zu stopfen. Sonst ersticken wir irgendwann in Programmierern, die alles mit einem Array lösen ;).

Thema: Instanziierung Variablen mit @ anfangend - pro / contra
Am im Forum: Grundlagen von C#

Zitat von Glowhollow
Deswegen sind Standards so wichtig. Eine einheitliche Schreibweise - erleichtert einem hier das ganze sehr und genau aus diesem Grund, beuge dich der Vorgabe der Mehrheit, und du wirst gemeinsam mehr erreichen.

Ja, was nun?
Hast du den verlinkten Artikel mal gelesen? Es gibt bereits einen "Standard" (eigentlich "Konvention"). Dass du einen neuen erfinden möchtest, ist weder notwendig, noch sind deine Ideen irgendwie sinnvoll.

LaTino

Edit: Bitte um Vergebung. Gar nicht gemerkt, dass glowhollow nicht der OP ist, daher meine "Hä"-Reaktion ;).

Thema: Didaktisches Konzept in Foren: wie hilft man richtig?
Am im Forum: Smalltalk

Zitat von Palin
Beim Lernen geht es ja erstmals darum die Grundlagen zu verstehen und nicht einfach darum jemanden das möglichst effizienteste Werkzeug in die Hand zu drücken. Wenn du es so machst bekommst du Leute, die das Werkzeug X nutzen können. Die aber sobald ein Problem, davon abweicht, es nicht mehr lösen können.

Und die Grundlagen sind hier nicht Arrays. Das ist nur das, was du und ich als erstes gelernt haben. Ein Array ist nur eine mögliche Implementierung einer Aufzählung. Und dennoch wird das Thema "Aufzählung" in der Ausbildung (beinahe) komplett ignoriert. Ich bin nur dagegen, dass man das auch noch gut findet, weil es einfacher sei. Weder ist es einfacher, noch gut.

Und wenn du mich als (studierten) Mathematiker fragst: In der Mathematik geht es nicht um Beweise und Algorithmen, sondern um eine bestimmte Art, zu denken. Aber statt das zu trainieren, wird den Kids eingebleut, dass sie Beweise halt auswendig lernen müssen. Das nutzt ihnen zum einen nichts ("das brauche ich nie wieder"), zum anderen verfehlt es den Zweck einer Ausbildung, und zum dritten sorgt es dafür, dass eine weitere Generation keine Lust auf Mathe hat, was für eine Nation, die stolz auf ihr Ingenieurwesen ist, tödlich ist. Und dasselbe passiert, wenn man Programmieranfänger zwingt, alle ihre Probleme mit Arrays zu lösen, weil man ihnen einfach kein besseres Werkzeug in die Hand legen möchte ("hat bei uns ja auch nicht geschadet").

Das ist großer Mist alles.

LaTino

Edit: zur Unterhaltung: http://thebestpageintheuniverse.net/c.cgi?u=math

Thema: Instanziierung Variablen mit @ anfangend - pro / contra
Am im Forum: Grundlagen von C#

[Artikel] C#: Richtlinien für die Namensvergabe

Ungarische Notation ist soooo 1995.

LaTino
EDIT: also, wenn dir das new nicht ausreicht, zu erkennen, wann ein Objekt erstellt wird...du versuchst hier ein Problem zu lösen, das keines ist :)

Thema: Override Custom Control Properties.Property
Am im Forum: GUI: Windows-Forms

So funktioniert ein Forum. Man postet Lösungen, auch, wenn man selbst drauf gekommen ist. Sonst sterben alle anderen dumm, und das kann ja keiner wollen.

Kannst du auch noch erläutern, was dieser Satz bedeutet:

Zitat
Jetzt möchte ich das nicht im Konstruktor tun, da es dann immer für die Runtime gilt.
Ich bin nur neugierig.

LaTino

Thema: Didaktisches Konzept in Foren: wie hilft man richtig?
Am im Forum: Smalltalk

Zitat von Th69
Anfänger können sich aber tabellenartige Strukturen besser vorstellen (wie sie es z.B. aus Excel kenne) als objektorientierte Daten.
Also werden mehrdimensionale Arrays verwendet, meist noch untypisiert (object bzw. string: "Alles ist ein String").

Ich kann dir versichern, dass du in beiden Aspekten irrst. Anfänger können sich Objekte besser vorstellen als tabellenartige Strukturen, weil Objekte im einfachsten Fall im wahrsten Sinn des Wortes Objekte der realen Welt sind (eigentlich: abbilden).
Und was denkst du, über welche Syntax stolpert dein Anfänger? Genau: über ".Select", über "yield return" und über den Lambda-Ausdruck im Select. Das sind alles Sachen, die erläutert werden, sobald man Enumerierungen lernt. Der Punkt ist aber genau das: Anfänger lernen Enumerierungen nicht. Ihnen werden vielmehr mehrdimensionale Arrays eingeprügelt, weil das die Datenstrukturen sind, die man in C (nicht C++!) zu Beginn benutzt. Weil das seit den 70er Jahren das ist, was Programmieranfänger lernen müssen. Komischerweise haben die Kids in unseren Programmierkursen überhaupt kein Problem mit Objekten und Projektionen. Aber denen wurde auch nie erzählt, man müsste denken wie Excel.

LaTino

Thema: Didaktisches Konzept in Foren: wie hilft man richtig?
Am im Forum: Smalltalk

@Abt Betriebsblindheit, mea culpa (wir nutzen teils eine 20 Jahre alte DAL, deren Reader so strukturiert ist, dass ein enumerieren identisch mit materialisieren ist, weil der Enumerator mehr macht als er soll. Das sorgt gern für Probleme, und ein Warnzeichen ist eben foreach yield.)

Ansonsten: Das kann man sehr gern mal ausdiskutieren, weil das Thema Didaktik in der Informatik interessant und aktuell ist und dazu meiner Erfahrung nach meistens darin besteht, dass völlig überforderte Lehrkräfte völlig überforderte Schülern zwingen, völlig überalterte Ansätze stumpf auswendig zu lernen.

yield und die Behandlung von Enumerationen sind kein fortgeschrittenes Konzept und auch kein Konzept, das es nur in .NET gibt. Von daher wäre es absolut Pflicht, sich damit zu beschäftigen. Wenn ein Lehrer / Dozent dieses Konzept ignoriert, auf der anderen Seite aber mehrdimensionale und jagged Arrays einführt und verwenden lässt, dann versagt er.

Array -> Listen -> Enumerationen (yield und Materialisierung) -> weitere Enumerationstypen außer Array und Liste -> Mehrdimensionale Aufzählungen und jagged Arrays.

Implementierung -> Implementierung -> dahinter liegendes Konzept -> weitere Implementierungen -> weiter gehende Konzepte

Hier im Forum ist das doch wunderschön zu sehen. Immer, wirklich immer wenn eine Frage mehrdimensionale Arrays beinhaltet, bestehen deutliche Wissenslücken in den basics. Wundert das keinen? Wie kommt ein Anfänger, der Probleme mit Grundlagen hat, auf mehrdimensionale Arrays (und vor allem: wieso glaubt er, ein Problem damit lösen zu können?).

Junior-Softwareentwickler (also die Entwickler, die unser Bildungssystem so ausspuckt) heißen so, weil sie erst einmal lernen müssen, Software zu entwickeln. Und das sollte nicht so sein, jedenfalls nicht mit Grundkonzepten.

und @Palin, das ist auch in der Mathe-Nachhilfe so. Der Pythagoras wird über Höhen- und Kathetensatz hergeleitet, immer, und nur so. Dass es verschiedene Wege des Beweises gibt, dass prinzipiell in der Mathematik immer mehrere Wege zum Ziel führen und dass es darum geht, selbst einen Algorithmus zu finden und seine Richtigkeit nachzuweisen: Pustekuchen. Für viele Mathelehrer ist der Weg das Ziel: alles muss so gemacht werden, wie es schon immer war. Dabei ist eigentlich das Ziel das Ziel, es gibt schließlich nichts Pragmatischeres als Mathematik. Und hier ist das Problem, dass dem Schüler nur ein Werkzeug gegeben wurde (mehrdimensionale Arrays) und er jetzt versucht, jedes Problem mit diesem Werkzeug zu lösen. In der IT geht es aber darum, das richtige Werkzeug zu nutzen oder zu bauen. Lehre ihn, zu fischen: zeige ihm andere Werkzeuge. Und nicht: lass ihn mal mit dem begrenzten Toolset, das sein Lehrer ihm gegeben hat, irgendetwas bauen, Hauptsache es läuft.

LaTino

Edit: man schaue sich mal unser verlinktes openbook: Visual C# an. Kapitel 2.5. Arrays, Zugriff auf die Elemente, dann sofort mehrdimensionale Arrays. Müsste man den Autoren meiner Meinung nach kräftig um die Ohren hauen.

Thema: Mehrdimensionale Arrays mit verschiedenen Dimensionen
Am im Forum: Grundlagen von C#

Zitat von Abt
Wenn jedoch der yield-Effekt erwünscht wird, dann ergibt sich
[..]

Jetzt hast du nur die Materialisierung durch ToList() gegen die Materialisierung durch foreach getauscht und hast immer noch keinen "yield-effekt".


public IEnumerable<ModelCSV> ReadCSV(string path, string delimiter)
{
    using (StreamReader reader = new StreamReader(path))
        return ReadFile(reader, delimiter).Select(Parse);
}

private static ModelCSV Parse(string[] input) 
    => new ModelCSV 
    {
        Column1 = input[0], 
        Column2 = input[1], 
        Column3 = input[2], 
        Column4 = input[3]
    };


Ich halte nicht viel davon, weil der reader im Zweifel schon disposed ist, wenn man dann endlich die Liste materialisieren möchte. Schlechter Einsatz für yield.

LaTino
EDIT: typo

Thema: Oracle 11.2 Client findet die OraOps12.dll nicht
Am im Forum: Datentechnologien

Gibt's in Beta inzwischen auch für .net core: https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core/2.12.0-beta2

Und Oracle hat dafür nicht einmal zwei Jahre gebraucht.

LaTino

Thema: Ist es richtig, dass ein DI Framework mir meine 'vorinstallierten' Dependencies direkt injected?
Am im Forum: Rund um die Programmierung

Zitat von mfe
Äh... nein und nochmal nein. Es heißt "Statt dass die Anwendung den Kontrollfluss steuert und lediglich Standardfunktionen benutzt, wird die Steuerung der Ausführung bestimmter Unterprogramme an das Framework abgegeben."

Tja. Wirf auch mal einen Blick in die englische Wikipedia, statt die deutsche hier ohne Quellenangabe zu zitieren. Die deutsche ist hier leider ziemlich missverständlich.

LaTino

Thema: Ist es richtig, dass ein DI Framework mir meine 'vorinstallierten' Dependencies direkt injected?
Am im Forum: Rund um die Programmierung

Zitat von mfe
IoC - Inversion of Control bedeudet, dass du die Steuerung deines Programmablauf abgibst.

Äh, nein, das bedeutet es nicht. Es bedeutet, dass die konsumierende Klasse bestimmt, wie Teilaspekte des Programmablaufs, der in der/den ausführenden Klasse(n) definiert ist, implementiert sind. Die ausführenden Klassen geben die Verantwortung für die Implementierung ab. Dadurch wird der Konsument anstelle der ausführenden Klasse zum steuernden Teil - inversion of control, literally.

Der Programmablauf bleibt gleich.
Die Implementierung der Verarbeitung wird vom Konsumenten vorgegeben.

Erreichen kann man diese Umkehr durch Dependency Injection, also durch Einschießen der Implementierungen in die ausführende Klasse. Das ist nicht die einzige Methode, um IoC zu implementieren, aber die praktikabelste.

Und eine Form der Dependency Injection wäre über einen DI-Container, aber auch das ist kein Muss. Und auch mit einem DI-Container gibt man nirgendwo die Objekterzeugung ab, diese Aussage halte ich für ziemlich daneben. Das sind keine magischen Wesen, die irgendwo unabhängig vom Entwickler im Raum schweben und Gedanken lesen.

LaTino

Thema: MVP Winforms : verstehen und lernen, ist es so richtig?
Am im Forum: Code-Reviews

Zitat von Th69
In "reinem" MVP darf in den einzelnen UI-Klassen keine Logik untergebracht sein (z.B. noch nicht einmal der Aufruf eines anderen Fensters, dies wird dann alles über den Presenter gesteuert). Die UI ist nur noch reine Datenanzeige bzw. Datenerfassung.

Stimmt genau und ist auch der Grund, wieso MVP nicht so beliebt ist. Der Presenter mutiert bei komplexen Oberflächen zu einer Gottklasse und der Mehrgewinn an Organisation geht flöten. Bei MVC ist das besser vermeidbar.

Für Otto-Normal-Oberflächen sollte es aber reichen, ohne dass es undurchschaubar wird.

LaTino

Thema: Struct auswerten mit foreach
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das eigentliche Problem an dem Code ist, dass du ohne Not struct nutzt. Das zweite Problem ist, dass du ohne Not Reflection benutzt. Das dritte Problem ist, dass du beides falsch nutzt. Das vierte Problem ist, dass du deinen Listview per Code statt per Binding befüllst, und das fünfte und ärgerlichste ist, dass du den Code so beschnitten hast, dass man erstmal ein bisschen Arbeit hat, wenn man dir helfen möchte.

An deiner Stelle würde ich die ersten vier Probleme lösen. Alternativ kannst du auf den Lerneffekt verzichten und das hier machen:


//FALSCH: object value = fi.GetValue(infos);
object value = fi.GetValue(data);

LaTino

Thema: Kann man in ASP.NET Core herausfinden, welche Bindings für die Anwendung im IIS konfiguriert sind?
Am im Forum: Web-Technologien

Zitat von gfoidl
Mit IIS und Kestrel nicht, aber mit IIS und der Authentication Middleware.
Schon klar. Worauf ich hinauswollte: der Grund, wieso man ein paar Handstände machen muss, ist eben die Tatsache, dass kestrel umgebungs-agnostisch ist. Was erklärt, wieso es umständlich ist, von dort aus Informationen über die Umgebung zu erhalten.

(Dass es prinzipiell trotzdem geht: prinzipiell geht immer alles, ist nur eine Frage des Aufwands. Wir machen das Ganze per IdentityServer, ist eine ganzheitlicherer Ansatz. Ohne Umgebungsvariablen an die Bindings im IIS zu kommen...da fallen mir nur sehr bösartige Hacks ein.)

LaTino

Thema: Array Umwandlung bei Variabler Länge des Arrays
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

- neues Projekt
- Form hinzufügen
- Datagrid auf das Form ziehen
- neue Klassen hinzufügen:


public class DataGridModel
{
    [DisplayName("Variablenname")]
    public string Name { get; set; }
    [DisplayName("ist gesetzt")]
    public bool IsSet { get; set; }
}

public class DataAdapter
{
    public IEnumerable<DataGridModel> Load(object[][] sqlOutput) => sqlOutput.Select(p => new DataGridModel {Name = p[0].ToString(), IsSet = p[1].Equals(1)});

}

Code-Behind deines neuen Forms erweitern:


public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
        dataGridView1.DataSource = new DataAdapter().Load(new[]
        {
            new object[] { "Variable_1", 1 },
            new object[] { "Variable_2", 0 },
            new object[] { "Variable_3", 1 },
            new object[] { "Variable_4", 0 },
            new object[] { "Variable_5", 1 }
        }).ToList();
    }
}

Done.

LaTino

Thema: Kann man in ASP.NET Core herausfinden, welche Bindings für die Anwendung im IIS konfiguriert sind?
Am im Forum: Web-Technologien

Deshalb gibt es keine Windows-Authentifizierung mit IIS und Kestrel, sondern nur mit Http.Sys oder WebListener anstelle von Kestrel.

LaTino

Thema: MVP Winforms : verstehen und lernen, ist es so richtig?
Am im Forum: Code-Reviews

Du übersiehst, dass mit drei Schichten-Trennung die übergeordnete Architektur gemeint ist. Das MVP-Pattern die Art, wie man die Präsentationsschicht (die UI) umsetzen kann. Das bedeutet im Umkehrschluss, dass bei deiner Umsetzung insbesondere das Verwalten von Daten nichts zu suchen hat: weder das Laden aus der, noch das Speichern in die Datenbank hat irgend etwas in der Präsentationsschicht zu suchen. Dein UI-Model darf die Datenbank nicht kennen. Außerdem findet die Kommunikation zwischen View und Presenter dadurch statt, dass der Presenter die Datenbindungsquellen des View manipuliert und auf der anderen Seite Ereignisse des View abonniert. Wird natürlich schwierig, das ohne Datenbindung zu machen.

In deinem Beispiel hat der View das Zepter in der Hand. Ich sehe da keinen Gewinn an Organisation gegenüber einem rohen Windoiws-Forms-mit-Code-Behind-Entwurf.

LaTino

Thema: Verschlüsselung der Daten zwischen Angular und ASP.NET Core
Am im Forum: Web-Technologien

Speichern als salted hash, Sicherheit beim Übertragen durch passende Wahl eines sicheren Kommunikationskanals, anstatt selbst zu verschlüsseln. TLS macht das, was du möchtest.

LaTino

Thema: In Array den höchsten Wert unter 10er Blöcken ermitteln.
Am im Forum: Grundlagen von C#

Nur so als Nachtrag: ich bin sicher der erste, der die Benutzung von Linq in so einem Fall begrüßt, es sei nur darauf hingewiesen, dass Skip().Take(), so einfach es sein mag, grottenlangsam ist und superschlecht skaliert. Kommt drauf an, ob das für den Anwendungsfall wichtig ist (meistens nicht, aber in den Fällen, wo es drauf ankommt, tut's dann richtig weh...).

LaTino
Zur Illustration:

mit Skip.Take vs. die oben mit Pseudocode skizzierte Lösung
20 Elemente: Faktor 4 langsamer
20.000 Elemente: Faktor 225
200.000 Elemente: Faktor 1530
2.000.000 Elemente: Faktor 28850 (knapp 10 Minuten vs 20 ms)
Sollte man im Hinterkopf behalten.
(gfoidls Vorschlag ist nochmal einen Zacken schneller, schätze ich, skaliert aber nicht besser)

Thema: In Array den höchsten Wert unter 10er Blöcken ermitteln.
Am im Forum: Grundlagen von C#

Vermutlich schnellste Lösung:


Methode FindeLokalesMaximum
Eingabe: Array von Werten, Größe der lokalen Gruppen (10 bei dir)
für einen zaehler von 0 bis zur größe des Zahlenarrays
  wenn der zaehler größer null und durch die Größe der lokalen Gruppe ohne Rest teilbar ist
     liefere das derzeitige maximum und setze es auf ersten wert der nächsten gruppe
  wenn der Wert des Arrays an der stelle des Zählers größer ist als das aktuelle lokale Maximum
     setze das lokale Maximum auf diesen Wert

am Ende: wenn die Länge des Zahlenarrays nicht ohne Rest durch die Größe der lokalen Gruppe teilbar ist
   liefere das zuletzt gesetzte lokale Maximum
Die eigentliche Methode in C# ist sogar noch kürzer. (4 Zeilen)
Schau dir https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/yield an.
Einfach durch dein Array rennen und in regelmäßigen Abständen (bei dir alle 10 Werte) das lokale Maximum zurückgeben und danach zurücksetzen.

LaTino

Thema: XML ohne Parentnode auslesen
Am im Forum: Grundlagen von C#

Wenn du per Serialisierung arbeitest, muss dein deserialisiertes Objekt entweder das XML abbilden - heisst: "unnötige" Mantel-Property - oder du kannst die Standardserialisierung erweitern. Eine dritte Möglichkeit ist die clevere Benutzung von Properties:


public class DatBase
{
    [DataMember]
    private DataList DataList { get; set; }    


    [IgnoreDataMember]
    public DataProcess[] Processes => DataList.Processes;
}

Macht den wenigsten Aufwand und das Ergebnis sieht "von außen" (für den anwendenden Programmierer) genauso aus, als wäre dein XML die obere Variante.

LaTino