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: Wie erstelle ich ein Fenster von genau 1900x1500 px?
Am im Forum: GUI: Windows-Forms

Bin nicht hundertpro sicher, dass die Antwort zur Frage passt, aber:

- setz die Eigenschaft "AutoScroll" der Form auf true.
- füg ein Panel / LayoutPanel hinzu (da gibt's verschiedene, welches, muss du selbst wissen)
- setz "AutoSize" des Panels auf false.
- setz die Eigenschaft "Location" des neuen Panels auf "0;0"
- setz die Größe des Panels auf deine gewünschte Größe (Eigenschaft "Size")
- Setz die Property "Locked" des Panels auf True

Einen guten Überblick verschaffst du dir mit Ansicht -> weitere Fenster -> Dokumentengliederung.

Fertig. Du hast jetzt ein großes Panel in einem Form, das so eingestellt ist, dass es Scrollbalken zeigt, wenn der Inhalt größer ist als die eigene Größe.

LaTino

Thema: Visual Studio 2008 unter XP mit Net Framework 4.0
Am im Forum: Grundlagen von C#

Zitat von -Dirk-
LaTino, bitte spar dir die Kommentare:

Dunning-Kruger usw. Behalt es einfach für dich, interessiert mich wirklich nicht was du denkst, ist mir auch zu dumm und zu kindisch weiter drauf einzugehen. Ich komm schon ganz gut klar ;)
Zitat
Du hast bestimmt schon einmal http://www.nuget.org besucht, nicht wahr?

erstes Posting oben, da du es aber vermutlich gar nicht gelesen hast...

Ja, so etwas dachte ich mir. Lass mich dir helfen.
1. Besuche www.nuget.org
2. Gib oben in das Suchfeld ein: "Reactive Extensions"
3. Klick den ersten Link "System.Threading.Tasks.Extensions" an.
4. Klicke unten links "Download" an.
5. Ändere die Erweiterung der heruntergeladenen Datei in ".zip".
6. Entpacke die Datei.
7. Profit.

Glückwunsch. Bist du sicher, dass diese Computer-Sache das Richtige für dich ist?

LaTino
EDIT: hängt an. (rx-main für 3.5)

Thema: Visual Studio 2008 unter XP mit Net Framework 4.0
Am im Forum: Grundlagen von C#

Wow, also wirklich wow. Die Nonchalance, mit der du fundiertes und angebrachte Hinweise zur Seite wischst, ist schon eine Liga für sich. Vielleicht zur Einordnung: ich glaube du bist hier im Thread der einzige, der das Programmieren als Hobby betreibt. Ist schön zu sehen, dass du dennoch überzeugt bist, keine Hinweise beachten zu müssen. Dunning-Kruger, nehme ich an.

Die Lösung deiner Situation ist schon mehrfach erwähnt worden: nimm einfach Lehrbücher, die zu dem passen, was du lernst. Gebrauchte Ausgaben zu VS 2008 und .net 3.5 gibt's für einen Appel und ein Ei.

Zitat
Es geht also um diese Windowsoberflächen dabei. Das bedeutet schon mal für Consolen C# keine Probleme - gut. Und mit diesem Satz: über einen anderen Thread läuft und so den Hauptthread deiner Anwendung nicht blockiert. Meinst du damit das beim starten von Windows-Fenster Anwenden da im Grunde 2 Programme ablaufen, einmal die Console im Hintergrund und das Fenster eigenständig?
Und mit "schlicht einfriert" meinst du CPU überlastet?

Du verstehst da etwas, was Taipi88 nicht geschrieben hat. Es geht bei Tasks nicht um eine Oberfläche. Das ist nur ein Gebiet, wo die Dinger sehr brauchbar sind, ein Beispiel, das Taipi88 gegeben hat. Und nein, ein Thread ist kein Programm. (Sondern das hier.) Einfrieren bedeutet einfrieren. Eine Benutzerschnittstelle, die mit einer langwierigen BErechnung beschäftigt ist und deshalb keine Eingaben entgegennimmt. Das hat mit der CPU nichts zu tun.
Zitat
Danke MarsStein für deine Antwort. Diese Reactive Extensions für 3.5 kennst du da ein download-link? Und diese nuget console (die ich nicht zum starten bekomme), brauch ich die dann überhaupt?

Du hast bestimmt schon einmal http://www.nuget.org besucht, nicht wahr?

LaTino

Thema: Visual Studio 2008 unter XP mit Net Framework 4.0
Am im Forum: Grundlagen von C#

Zitat von -Dirk-
Im Grunde dürfte mir 2008 zum lernen locker ausreichen.

Natürlich. Und zwar lernst du dann etwas, das vor fast genau 10 Jahren aktuell war. Das ist in der IT ein sehr, sehr langer Zeitraum.

Konsequenterweise solltest du deine Lehrbücher wegwerfen und dir welche von 2007 schießen, denn die passen dann auch zu deiner Entwicklungsumgebung. Du hast dir einen Ford T gekauft und beschwerst dich, das keins der Handbücher erwähnt, wie man die Anlasser-Handkurbel bedient.

Es gibt gute Gründe, noch VS 2008 zu verwenden. Weil man's billig auf Ebay bekommen hat, ist keiner, zumal dir die Community Editions bekannt sind.

To add insult to injury: Du verwendest ein Betriebssystem, das offiziell seit drei Jahren (!!!) nicht mehr supportet wird. Nostalgie ist ja schön und gut, aber das überschreitet auch im privaten Bereich die Grenze zur Fahrlässigkeit.

Kopfschüttelnd,

LaTino

Thema: Auswertung und Feedback zur DevOps-Umfrage
Am im Forum: Smalltalk

Interessant, offenbar habe ich, was TDD angeht, einen Tunnelblick.

@palin:

Zitat
Arbeitgeber: "Wie lange brauchst du für die und die Anforderung?"
Entwickler: "4 Stunden für die Implementierung und UnitTests."
Arbeitgeber: "Und nur für die Implementierung?"
Entwickler: "4 Stunden".

Bei Arbeitsanweisung dieselbe schriftlich festhalten. Das ist nach meiner Auffassung eine direkte Anweisung, auf die grundlegenden Qualitätssicherungsmaßnahmen zu verzichten. Also absichern, damit mangelnde Qualität dann nicht dir zugeschoben wird. Und mittelfristig anderen Job suchen.

(Das ist genau das, was ich ganz oben meinte. Solche Arbeitgeber sind besser heute als morgen aus dem Geschäft. Wenn man auf die Qualität seiner Produkte einen Haufen setzen möchte, kann man immer noch am BER anfangen. *grrr*)

@Wasabi: das ist bei der breiten Masse der Recruiter leider noch nicht angekommen. Die Suche nach einem "full stack" developer sollte mittlerweile ein rotes Warnschild sein: hier wird ein Mädchen für alles gesucht, weil man eigentlich keine richtige Stellenbeschreibung hat.

LaTino

Thema: Auswertung und Feedback zur DevOps-Umfrage
Am im Forum: Smalltalk

Zitat von Sir Rufo
Und wenn das Argument id null ist oder gar keine Id darstellen kann, dann gibt es eine ArgumentNullException bzw. ArgumentException. Auch das dokumentiert man (logisch) im <exception> Abschnitt und schreibt dazu auch UnitTests.

Eigentlich ist das genau anders herum, denn der Test existiert vor der Methode. Die Testcases definieren das Verhalten der Methode, und die Dokumentation hält das so fest, dass die Information auch außerhalb des Codes verfügbar ist/sein könnte, wenn man wollte.

LaTino

Thema: Wie kann ich Elemente aus einer List<Label> löschen?
Am im Forum: GUI: Windows-Forms

Zitat von ErfinderDesRades
Aber disposed das auch die entfernten Controls?
Weil sonst hätte man ja leicht ein schönes Memory-Leak.

Nein tut's nicht und ja, hätte man. MSDN hat extra ne dicke fette Warnung: Control.ControlCollection.Clear-Methode

Also Obacht ;).

LaTino

Thema: Auswertung und Feedback zur DevOps-Umfrage
Am im Forum: Smalltalk

...und wenn die Regressionstests durchlaufen, hat man darüber hinaus keine bereits vorhandenen Funktionen in ihrer Arbeitsweise ungewollt verändert. Die ganze Testerei NACH den Unit Tests darf je nach Komplexität auch ein paar Tage in Anspruch nehmen oder kann weggelassen werden.
Das ist eine Entscheidung, die im QM festgehalten werden muss.

Thema: Wie erstelle ich Plugins für ein Spiel?
Am im Forum: Rund um die Programmierung

http://bfy.tw/CtTW

Thema: Wie erstelle ich Plugins für ein Spiel?
Am im Forum: Rund um die Programmierung

Die Google-Ergebnisse für "Unturned plugin" sind eigentlich ziemlich umfangreich. Allerdings kann ich zugegebenermaßen nicht gut beurteilen, wie gut die Treffer sind. Ein bisschen herumgeklicke brachte mich jedenfalls zu einem Tutorial für ein Plugin für RocketMod(?) für Unturned und ein weiteres Tutorial, wie man das dann zu installieren hat. Das müsste doch reichen, nicht?

LaTino

Thema: Auswertung und Feedback zur DevOps-Umfrage
Am im Forum: Smalltalk

Zitat von OlafSt
Ich habe lange überlegt, ob ich mich hier beteiligen sollte, oder nicht. Die Feindseligkeit gegenüber anders arbeitenden ist schon bedrückend. Aber lassen wir das, führt zu nix.

Du missverstehst. Die Feindseligkeiten sind nicht den Leuten gegenüber, die so arbeiten, sondern den Leuten gegenüber, denen ihre Entwickler und ihr eigenes Produkt so egal sind, dass sie nicht einmal vernünftige Arbeitsgrundlagen schaffen. Mein erster Arbeitsplatz als angestellter Entwickler entsprach ziemlich genau deiner Beschreibung: kleines Unternehmen (~5 Entwickler) unstrukturierter Code, VSS als Quellcodeverwaltung (immerhin). Allerdings war das 1999, und das Konzept Quellcodeverwaltung war mir, der ich davor lange selbstständig war, völlig unbekannt. Aus heutiger Sicht würde ich diese Umstände als Bestrafung ansehen. Die Werkzeuge haben sich weiterentwickelt, die Methoden haben sich weiterentwickelt, der Begriff Softwarequalität ist ein anderer. Softwareentwicklung ist wesentlich effizienter geworden, und DevOps ist ein weiterer Baustein im Werkzeugkasten, um die Effizienz zu erhöhen. Ein Lebewesen, das nicht mehr zuckt, ist genauso tot wie das Unternehmen, das sich nicht mehr weiter entwickelt[1]. Sich im Rahmen der Unternehmenstrategie mit Werkzeugen zu befassen, die die Arbeitsleistung und -qualität der Entwickler erhöhen, sollte selbstverständlich sein. Nebenbei macht man den Entwicklern das Leben leichter, und auch das ist nach meiner Meinung eine Aufgabe der Unternehmensführung, wenn sie gute Entwickler halten und noch bessere anlocken wollen.
Zitat
Mir ist da z.B. völlig schleierhaft, welchen Vorteil ich aus einem über Nacht erzeugten Kompilat haben soll. Ist es tatsächlich inzwischen üblich, das man am Code Änderungen vornimmt und diese einfach nur eincheckt, ohne das ganze wenigstens einmal durch den Compiler zu schubsen ? Wenn ja, bleibe ich Oldschool...

Habt ihr nur ein Projekt? Bestehen keine Abhängigkeiten zwischen euren Projekten? Könnte ihr alle eure Produkte lokal innerhalb von 2 Minuten kompilieren? Wie lange laufen eure Unit Tests? Auf welchen Softwareständen laufen Regressionstests?

Selbst meine Hobbyprojekte zu Hause sind über die Jahre so miteinander verflochten (gemeinsame Bibliotheken) und so komplex, dass ich zugegeben den Überblick verloren habe, welche Änderung in welchen Projekten Auswirkungen haben _könnte_. Und ich baue sicher nicht von Hand alle Projekte jedesmal durch, das kann auch ein trainierter Affe oder gleich ein Buildsystem (das nebenbei nicht nur die Projekte erstellt, sondern auch gleich die Unit Tests laufen lässt). Und da reden wir von maximal 5 Stunden die Woche, die ich dran sitze. Mir kann keiner erzählen, dass das selbst bei kleinen und kleinsten Unternehmen besser ist.

Bei größeren Unternehmen sind natürlich die Dimensionen ganz anders. Wenn mein Team was eincheckt, sind potenziell immer rund 100 andere Entwickler von den Änderungen betroffen. Man kann zwar im eigenen Projekt sicherstellen, dass es kompiliert, aber nicht in abhängigen Projekten (wenn man nicht mal weiss, welche Projekte davon abhängen). Um ganz sicher zu gehen, müsste man also alle Projektmappen zumindest der wichtigsten Produkte durchkompilieren. Das dauert auf dem Buildserver ~30 Minuten, bei mir lokal gern mal 45 Minuten. Ich kann also entweder meine Entwickler pro Checkin 45 Minuten Däumchen drehen lassen, oder ich nutze ein Buildsystem. Das baut nebenbei noch alle Branches zB für einen Release oder ein spezielles Projekt mit.

Der Sinn daran, zu jeder Zeit ein funktionierendes Produkt zu haben, das auf einem beinah aktuellen Stand der Entwicklung ist, leuchtet dir nicht ein? Sagen wir, es ist bei euch wie bei uns damals: die Regressionstests bestehen aus dem Chef, der in der fertigen Software wild herumklickt und versucht, die neu eingebauten Features irgendwie zum Absturz zu bringen. (wir haben das gefürchtet. Irgendwie hat er immer einen Fehler gefunden.) Dann stellt sich die Frage: auf welchem Softwarestand probiert er das eigentlich? Findet er gerade Fehler, die eigentlich schon behoben sind?
Unter anderem dafür ist eine Software, von der immer ein funktionierendes Setup auf einem definierten Softwarestand existiert, unbezahlbar. Mal abgesehen davon, dass der Kunde neue Funktionen viel schneller erhält, weil das Zusammenstellen eines Setups kein eher seltener Vorgang ist, den ein Senior-Entwickler mit seinen Erfahrungen von Hand begleitet, sondern weil eine Setuperstellung ein alltäglicher Vorgang ist. Nimm dir den letzten Build, lass ihn durch die QS laufen, wenn du sowas hast, und raus damit an den Kunden. Bei kleinen Systemen hat man zwischen dem Checkin und dem fertigen Setup nicht mal eine Stunde. Bei großen fällt immer noch jeden Tag ein Setup aus dem Server (wohlgemerkt, da sind schon alle Unit Tests gelaufen).

Und das hat auch absolut gar nichts mit mobile apps oder Webentwicklung zu tun. Unser Hauptprodukt ist - neben Infrastruktursoftware - eine monolithische Desktop-Anwendung, sehr altmodisch vom Look&Feel, für einen sehr altmodischen Kundenkreis. Ich würde mich mit Händen und Füßen wehren, wenn man für diese Anwendung die Buildserver abschalten würde.
Zitat
Wozu also Releases, ergo wozu ein Release-System ?
Äh, was? Wenn ihr euren Kunden keine Updates/Patches/Hotfixes/neue Versionen zur Verfügung stellt, dann gestatte die Frage: was macht ihr eigentlich, wenn niemand je ein Produkt von euch bekommt?

Ja, die Umsetzung von modernen Softwareentwicklungs-Prozessen (DevOps) ist eine Investition. Kostet Zeit, Geld, Ressourcen. Gar keine Frage. Aber es lohnt sich, und zwar nach meiner Erfahrung immer.

Aber - gute Nachricht - man muss nicht alles auf einmal umsetzen. Man kann klein anfangen und immer weiter dazu bauen. Das geht los mit einer vernünftigen Quellcodeverwaltung (da zähle ich VSS nicht mehr dazu), geht dann weiter mit einem rudimentären Buildsystem. Hat man das, kann man die Testdurchdringung deutlich erhöhen - guter Zeitpunkt, über TDD nachzudenken. Soweit mag es für kleine Unternehmen schon reichen, die Investition ist überschaubar[2] - aber man muss, gerade was die Testabdeckung angeht, möglicherweise seine Entwickler weiterbilden.

Wenn man das selbst trotzdem nicht stemmen kann: es gibt Dienstleister, die einem dabei helfen. Ja, klar kostet das was, wie gesagt: es ist eine Investition in die Zukunft.

Lies bitte einmal diesen Artikel aus dem Jahre 2000: das war quasi state-of-the-art zu dieser Zeit und ist weitgehend immer noch gültig. Und der Autor begründet das auch viel besser, als ich das könnte (Passend dazu diesen 11 Jahre alten Thread.)

LaTino

[1] in irgendwelchen Marktnischen kann man trotzdem noch jahrelang existieren, schon klar. Aber ein Unternehmen, egal wie groß oder klein, das sich nicht permanent zu verbessern versucht, ist auf lange Sicht Geschichte.
[2] Das ist das, was ich privat bei mir zu Hause gemacht habe. Zum einen, weil es nötig war, zum anderen, weil ich was darüber lernen wollte.

Thema: Auswertung und Feedback zur DevOps-Umfrage
Am im Forum: Smalltalk

Kannst du bitte noch Verteilung der benutzten Build/RM-Systeme aufschlüsseln? Bin einigermaßen erschüttert, dass die so wenig verbreitet sind. Nach meiner Erfahrung ist das _der_ Faktor, der den Teams das nötige Selbstvertrauen und die Sicherheit bietet, um auch mal Mut beim Entwickeln haben zu können.

Was die Delphi-Adepten angeht: Gott, wie süß, v.a. auch die Überzeugung, dass Delphi eine Rolle spielen würde. Ich stelle lieber jemanden ein, der zwei Jahre Rust/Haskell/Go programmiert hat, als jemanden, der 15 Jahre Delphi gemacht hat. Bei dem weiß ich wenigstens, dass er sich für Neues interessiert, anstatt ein totes Pferd zu reiten.

LaTino

Thema: WCF mit TCP-Bindung wirft SecurityNegotiationException
Am im Forum: Netzwerktechnologien

Zitat von deisi
Habe außerdem keine Ahnung, wo ich diese ServiceBehaviorAttribute finden kann...mfg
Ach, komm schon. Erster Treffer Google-Suche nach "ServiceBehaviorAttribute": ServiceBehaviorAttribute-Klasse

Da ist unten sogar ein Codebeispiel.

LaTino

Thema: Wie Seperator/Delimiter in Binarfile einfügen
Am im Forum: Datentechnologien

Es gibt außerdem noch Spezifikationen, die bestimmte Bytefolgen vereinbaren. Ich mach mal ein einfaches Beispiel:


Tag: 0xDBFAFA
Tagformat: Tag, Länge, Inhalt
ByteArray: AC 44 5F 84 DB FA FA 01 CC A0 CB 64 7A

--> Tag beginnt bei Index 4, Länge ist 01 --> gesuchter Inhalt ist also 0xCC (0d204)

Du kannst also einfach lesen, sobald ein bekanntes Tag kommt, wertest du es aus und liest immer weiter. Der deutsche Standard für eTickets basiert auf so etwas ähnlichem.

LaTino
EDIT: musst natürlich sicherstellen, dass die Daten von einer Art sind, dass das Tag nicht durch Zufall durch die Daten gebildet wird.

Thema: Aus XML Struktur ein File erstellen
Am im Forum: Datentechnologien

Das ist XML. Da ist genau dieses Feature schon bei der Definition mit eingebaut (wie mfe schon richtig gesagt hat). Wenn du Daten als XML hast, solltest du auch die Vorteile von XML benutzen.


<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
    <xsl:template match="/">
TYPE "CZI_CalcDec"
VERSION : 0.1
//TITLE = CZI_CalcDec
//
// UDT-Struct for the data handling 
//
//EDITOR:     Robin Newitsch
   STRUCT
        <xsl:apply-templates select="/Section/Member" />
   END_STRUCT;
END_TYPE
	</xsl:template>

    <xsl:template match="Member[not(@Datatype='Struct')]">
        <xsl:value-of select="@Name" /> : <xsl:value-of select="@Datatype" />;
    </xsl:template>

    
    <xsl:template match="Member[@Datatype='Struct']">
        <xsl:value-of select="@Name" /> : Struct
        <xsl:apply-templates select="Member" />
        END_STRUCT
	</xsl:template>
</xsl:stylesheet>

...und fertig. Serialisierung/Deserialisierung ist hier einfach das falsche Tool.

LaTino

Thema: Infos von Fenster A nach Klick in DataGridView von Fenster B geben
Am im Forum: Grundlagen von C#

Auch wenn's von Taipi gut gemeint war: kopier bitte niemals Code, den du nicht verstehst. Nicht hier im Forum, und auch sonst nicht.

Alles Wissen, was du benötigst, steckt in der allerersten Antwort, wenn du dir nur mal die Mühe machst, den Artikel vollständig durchzuarbeiten (und damit ist nicht nur lesen gemeint).

LaTino

Thema: Absolute Sekunden aus Timespan erhalten
Am im Forum: Grundlagen von C#

Die Antwort ist in deiner Frage enthalten:


dass ich den Tagesüberlauf nicht mit bekomme und anstatt (ca) 3h eben 20h berechnet werden

Klar kriegst du den mit: wenn der Abstand größer als ein halber Tag ist, dann ist der Abstand mit "Tagesüberlauf" geringer und das gewünschte Ergebnis.

Zieh die beiden voneinander ab, wenn das Ergebnis > 12 ist, ziehst du noch einmal 24 ab.


var diff = (first.TimeOfDay - second.TimeOfDay).TotalHours;
var result = 3600 * (diff > 12 ? 24-diff : diff);

LaTino

Thema: UWP gute Beispiele finden für VS2017
Am im Forum: Smalltalk

Du hast Recht, der Umstieg ist alles andere als einfach. Am Anfang taumelt man von Stolperfalle zu Stolperfalle, bis man an den Punkt kommt, wo man "f*** it, ich mache einfach weiter Windows Forms" sagen möchte. Für mich war das die Stelle, an der ich mir ein Buch (eigentlich mehrere) gekauft hab und ein paar Wochenenden mit Schmökern verbracht habe. Definitiv kein verschwendetes Geld, wenn ich bedenke, wieviele graue Haare mir das erspart hat.

https://www.amazon.de/Developing-Windows-10-Applications-C/dp/1522894918

Würde ich als komplettestes Buch zum Thema ansehen.

Viel Erfolg,

LaTino

Thema: Parameterübergabe in die Applikation hinein
Am im Forum: Grundlagen von C#

Mach einen Wrapper für dein Application-Objekt und übergib den stattdessen.

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

LaTino

Thema: Komplexe lange Methode mit vielen If's besser strukturieren
Am im Forum: Rund um die Programmierung

Lässt sich anhand der Bruchstücke ganz schwer einschätzen, aber eventuell hilft dir so ein Konstrukt hier:


//init
var conditionalSelector = new ConditionalSelector<Action<MyClass>, Func<int,int,int,bool>>();
conditionalSelector.Register(obj => obj.ListA(new A()).For((a, b, c) => a > b && c % a > 1);

//später irgendwo:
foreach(var action in conditionalSelector.Where(a, b, c)
    action(obj)

Der ConditionalSelector ist eine Klasse, die beliebige Paare von Delegaten speichert (den auszuführenden Code und eine Bedingung, unter der er auszuführen ist. So etwas kann helfen, wenn man sehr viele strukturell ähnliche Aktionen zu je einer oder wenigen Zeilen Code für verschiedene Bedingungen ausführen will. Ist natürlich bei der Implementierung des ConditionalSelectors erst einmal etwas mehr Aufwand (dafür mMn wesentlich aufgeräumterer Code).

Insgesamt ist das auch nicht weniger Code dann, aber ich teile herbivores Auffassung nicht, dass nur reduzierte Codemenge es leichter macht, Code zu verstehen.

LaTino

Thema: CompositeCollection mit dynam. Anzahl von CollectionsContainern bzw. ComboBox mit hierarisch. Source
Am im Forum: GUI: WPF und XAML

Gib deinem VM eine Eigenschaft, die die Liste der uints aggregiert, anstatt die Aggregierung im View zu versuchen.

LaTino

Thema: Dynamisches benennen von XML(ElementName)
Am im Forum: Datentechnologien

Zitat von unconnected
@LaTino
Meines wissens wird das UnknownElement nur bei der deserialisierung aufgerufen.

Stimmt, dann hat sich das auch erledigt. Ich scheitere auch etwas dran, mir auszumalen, wofür das gut sein könnte. Wenn ich so einen Knoten mit variablem Namen in mein XML schreibe, wie zum Teufel soll ich dann beim Deserialisieren rausfinden, in welche Klasse ich deserialisiere?

LaTino

Thema: Dynamisches benennen von XML(ElementName)
Am im Forum: Datentechnologien

Nein, nicht mit dem XmlSerializer. Nicht ohne weiteres, siehe unten.

XmlSerializer und die XmlElementAttribute-Klasse arbeiten so zusammen, dass verschiedene Instanzen einer Klasse nach der Serialisierung ein und demselben XML-Schema entsprechen. Das heisst, die Tatsache, dass die XML-Knoten immer gleich heißen, ist absolut erwünscht.

Was meine ich mit "nicht ohne weiteres"? Naja, einen kleinen, etwas unsauberen Kniff gibt es.
Lass das XmlElementAttribute weg und abonnier das UnknownElement-Ereignis des von dir verwendeten XmlSerializers. Dann kannst du die Serialisierung/Deserialisierung noch beeinflussen.

Besser wäre ein eigener Serializer für solche Fälle. Das klingt auch nur nach großem Aufwand, so schlimm ist das nicht. (EDIT: das Stück Code eben ist ja an sich schon der (naive) Ansatz für einen Serializer)

LaTino

Thema: Dynamisches benennen von XML(ElementName)
Am im Forum: Datentechnologien

Da du von XElement redest, gehe ich mal von Linq to XML aus.

(Vorab: ThomasE.s Hinweis mit dem XmlSerializer ist - meistens - die bessere Variante.)

Natürlich kann man die Name-Eigenschaft einer XElement-Instanz zur Laufzeit (= dynamisch) ändern.


class ExampleClass
{
    public bool ExampleProperty { get; set; }

    public void SaveAsXml(string path)
    {
        new XDocument(
            new XDeclaration("1.0", "UTF-8", "true"), 
            new XElement(GetType().Name, 
                new XAttribute("referenceId", GetHashCode()),
                new XElement(nameof(ExampleProperty), ExampleProperty)
            )
        )
        .Save(path);
    }
}

Wobei ich irgendwie vermute, dass das nicht deine Frage war, aber mangels Glaskugel...

LaTino

Thema: RAM-Verbrauch bei JSON-Serialisierung großer Objekte optimieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Wurde ja schon gesagt, dass die Zeichenketten Ursache des Speicherproblems sind, das du hast. Dann serialisierst/deserialisierst du halt in einen (File-)Stream.


//there....

MyClass sourceObject = GetLargeObject();

JsonSerializer serializer = new JsonSerializer();
//Converter je nach Gusto hinzufügen, serializer konfigurieren....

using (var sw = new StreamWriter(filePath))
using (var writer = new JsonTextWriter(sw))
    serializer.Serialize(writer, sourceObject);


//...and back again.

MyClass destinationObject;

using (StreamReader file = File.OpenText(filePath))
{
    JsonSerializer serializer = new JsonSerializer();
    destinationObject = (MyClass)serializer.Deserialize(file, typeof(MyClass));
}
LaTino

EDIT: geht auch mit einem MemoryStream, und ich würde fast behaupten, auch da kannst wesentlich größere Objekte behandeln als auf deine bisherige Weise. Muss also kein File sein.

Thema: string[] args Elemente an andere Klasse übergeben
Am im Forum: Grundlagen von C#

Weil du die Variable db_config vom Typ DBConfig in der Main-Methode der Klasse deklarierst, ist sie auch nur innerhalb der Main-Methode verfügbar. Möglicherweise suchst du das hier: Felder, um die Variable über den Gültigkeitsbereich der Main()-Methode hinaus parat zu haben. Das wäre allerdings schon die Grundlage der Grundlagen und ein Anlass, sich erst einmal ein Buch zu schnappen und durch zu arbeiten.

Bitte auch [Artikel] C#: Richtlinien für die Namensvergabe beachten.


LaTino

Thema: HttpClient - Fehler bei SSL Verbindung zu bestimmter Webseite auf Windows Server 2012
Am im Forum: Web-Technologien

@Abt, was ist denn da los: https://twitter.com/mycsharp/status/877440500382543872
(ich meine den Link, da haut was nicht hin...)

Thema: HttpClient - Fehler bei SSL Verbindung zu bestimmter Webseite auf Windows Server 2012
Am im Forum: Web-Technologien

Die Webseite caffe.de benutzt - sagt mir jedenfalls mein Chrome - TLS 1.2. Versuch mal, die SecurityProtocol-Property entsprechend einzuschränken, also ausschließlich SecruityProtocolType.Tls12 festzulegen.


LaTino

Thema: SQLite - Daten per Query oder Linq filtern?
Am im Forum: Rund um die Programmierung

Zitat von Sebastian1989101
Ob SQLite-net-PCL das Query printet, werde ich mir gleich mal ansehen. Ist mir aber bisher nicht aufgefallen. Muss dafür irgendwas gesetzt werden?

Möglich, kann ich dir aus dem Hut nicht sagen. Sollte aber gut googlebar sein ;). Ich hab das mal bei einem Kollegen gesehen, der genau wie du wissen wollte, wie gut die per Linq erzeugten Abfragen sind.

LaTino

Thema: Software für Release notes gesucht (Alternative zu DevProject Manager)
Am im Forum: Smalltalk

Wir haben ca. alle vier Wochen ein Release. Zwischen den Abzügen des release-branches liegen je so etwa 4-5000 commits im trunk, die jeweils mit einem Task/Ticket verknüpft sein müssen. Anders als von Abt beschrieben (hier im Haus allerdings mit svn anstelle von Git) geht das m.E. gar nicht, wenn man niemanden einstellen will, der ausschließlich release notes erstellt.

LaTino