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 JimStark
Thema: Ab wann lohnt sich Azure Hosting?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Nochmal eine Frage zu Cosmos DB:

Wenn ich mehrere Entwickler habe die von unterschiedlichen Orten entwickeln. Stelle ich dann z.B. eine "Debug"-ComosDB zur Verfügung in der ich die IPs von den Entwicklern auf die Whitelist setze? Also alle greifen per Internet auf die Online DB zu? (Gibt ja auch noch den Emulator).

Thema: Wie kann ich eine Klasse festlegen, der erst zur Laufzeit feststeht?
Am im Forum: Grundlagen von C#

Zitat von GeneVorph

Der einzige Nachteil ist: you gotta get your sh** together!
Denn folgendes ist im Code möglich, macht aber von der Logik her keinen Sinn:


   public void UnLogicalMethod() 
     {
        RegularGrading r = new RegularGrading();
        SpecialGrading s = new SpecialGrading();

        r = FillRGWithSomeValues();
        s = FillSGWithAValue();

        selectedStudent.Grading.Add(r);
        selectedStudent.Grading.Add(s); //funktioniert beides, macht aber keinen Sinn, da ein Schüler nur die eine Art der Bewertung erhält ODER die andere!
     }


Das macht sogar sehr viel Sinn, du erbst ja vom selben Interface Könntest evtl. eine Methode zum Hinzufügen machen mit zwei Überladungen (Regular und Special)

Thema: Wie kann ich eine Klasse festlegen, der erst zur Laufzeit feststeht?
Am im Forum: Grundlagen von C#

Ich verstehe das Problem nicht, sie unterscheiden sich in der Bewertung:


public class Student 
{
    public StudentType type {get;set;}
    public List<Grading> Grades {get;set;}
}

Je nach StudentType castest du dann auf SpecialGrading oder RegularGrading. So wurde es oben ja auch schon erwähnt.

Die Baseclass kann dann z.B. enthalten:


public abstract class Grading
{
    public int Id;
    public int StudentId;
    public DateTimeOffset Date;
....
}


also das ganze Zeug das beide gemeinsam haben und du eh für die Datenbank brauchst.

Oder verstehe ich da was komplett falsch?!

Thema: Wie kann ich eine Klasse festlegen, der erst zur Laufzeit feststeht?
Am im Forum: Grundlagen von C#

Meinst du jetzt mich?
Er wird niemals den Basistyp erstellen müssen wenn er Regular und Special getrennt definieren will, deswegen abstrakt.
Und lieber Klasse als Interface bei diesem "is-a", vorallem wenn es mal in eine Datenbank soll.

Und ich sehe gerade, Grade ist bei Special nicht dabei, also kann die noch raus aus der Baseclass.

Thema: Wie kann ich eine Klasse festlegen, der erst zur Laufzeit feststeht?
Am im Forum: Grundlagen von C#

Zitat von GeneVorph

Gestern Abend kam ich dazu ein bisschen zu coden und ich muss sagen: die Idee mit den Interfaces gefällt mir ziemlich gut. Ich weiß nicht, ob ich das alles richtig verstanden habe, aber über's Wochenende dürfte ich etwas ausgiebiger uzm Programmieren kommen und dann werde ich meine Lösung mal hier posten.




Ich glaube eine abstrakte Basisklasse wäre da besser zu gebrauchen. Und dann je nach Student-Type einfach casten.



public abstract class Grading
{
    public double Grade {get;set;}
}
public class RegularGrading : Grading
{
     //Regelschulbewertung
     public string GradeWord {get;set;}
}

public class SpecialGrading : Grading
{
     //Förderschulbewertung
     public string VerbalGrade {get;set;}
}

Thema: Wie benutze ich Konstruktoren und Parameter richtig?
Am im Forum: Grundlagen von C#

In der Main referenzierst du nur die Klasse.

Bzgl. dem unterstrichenen: How to initialize objects by using an object initializer (C# Programming Guide)

Thema: Ab wann lohnt sich Azure Hosting?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat von Abt
Was Du gemacht hast ist eigentlich das, was man nicht tun soll und die meisten falsch machen: Du hast erst eine Applikation geschrieben und machst Dir dann über das kosteneffiziente Hosting gedanken. Besonders bei kleinen Anwendungen wird hier die Cloud - wenn man nur den reinen Euro vergleicht - verlieren.


Da hast du recht, das habe ich gemacht. Auf 10€ mehr oder weniger pro Monat kommt es auch gar nicht so sehr an. Sondern mehr, ob sich der Aufwand für dieses ultra kleine Projekt lohnt.

Das mit dem Table Storage hatte ich gar nicht auf dem Schirm. Prinzipell sollte es ja ohne große Umstellung funktionieren. EntityFramework mit Microsoft.EntityFrameworkCore.Cosmos als Provider und die Datenbank ist recht unkompliziert.

Danke schon mal. Das werde ich mal mit dem Azure Cosmos DB Emulator testen.

Thema: Ab wann lohnt sich Azure Hosting?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi, ich brauch mal eure Erfahrung.

Ich habe eine kleine ASP.NET Core Anwendung. Diese liest aus einer Datenbank Einträge, zeigt Sie und filtert sie ggf.
Vielleicht kommt dann noch eine zweite ASP.NET Core App als Admin-Panel (Einträge erstellen, ändern, löschen) dazu.
Die erste Anwendung hat auf die DB nur einen Readonly Zugriff, die zweite dann Read+Write und soll nicht öffentlich erreichbar sein.
Die Kompexität hält sich also sehr in Grenzen.
Besucheranzahl wird ca. max. 100 Visits am Tag sein (also so gut wie keine Auslastung).

Macht es kosten-technisch da überhaupt Sinn dass auf Azure als Web App + MS Server DB aufzuziehen?

Alternative wäre einen vServer für paar Euro zu mieten und das auf Docker laufen zu lassen.
Wozu würdet ihr bei dem Projekt raten?

Würde es beim Deployen für Docker reichen wie Docker-Images für ASP.NET Core vorzugehen und den jeweiligen Port dann einfach weiterzureichen oder sollte davor noch nginx oder ähnliches geschalten werden?

Und spricht was dagegen die Anwendung als Release direkt im .NET-Container zu bauen?
Dass ich das z.B. mit Jenkins nur anstoße und vom Repo pulle?

Vielen Dank euch!

Thema: Hello World! myCSharp auf .NET
Am im Forum: Ankündigungen

Na endlich kann ich mit zwei Geräten eingeloggt bleiben

Wie finanziert sich das hier eigentlich? Privat von euch, Spenden?

Thema: Funktion/Methode in Blazor aufrufen um HTML-Code zu reduzieren
Am im Forum: Web-Technologien

Ist die Methode eine ganz normale C# Methode? Dann musst du natürlich auch die Variablen einfügen.https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/tokens/interpolated

Und falls das HTML rendern dein Problem ist, hilft dir vllt. MarkupString

Thema: PDFs erstellen unter ASP.NET Core
Am im Forum: Web-Technologien

Zitat von MrSparkle
Eine andere Idee ist, mit Hilfe des Open XML SDK ein Word-Dokument zu erstellen, und das dann mittels LibreOffice per Kommandozeile in ein PDF zu konvertieren. Das scheint die einzige Möglichkeit zu sein, die alle unsere Anforderungen abdeckt. Aber vom Aufwand her übertrifft das noch das Erstellen von DevExpress-Reports.

Genau so mache ich das bei einem Projekt. Hatte da aber das Problem dass es LibreOffice doch nochmal anders darstellt als Word. War ziemliches Gefrickel.

Thema: Wie mache ich einen Task zum Arbeiten im Hintergrund asynchron?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Du könntest das alles vielleicht in eine eigene Klasse auslagern, dann kannst du dich in deim ViewModel an Events hängen und so deine UI aktualisieren lassen. Dann wäre es auch nicht so unübersichtlich wie mit der "AsynchMethods" Utility-Klasse.

Thema: Eigenes Netzwerk hinter Router
Am im Forum: Smalltalk

@T-Virus
Ja, mit der Fritzbox kann ich auch ein Gast-WLAN einrichten. Also da wäre auch alles möglich. Ich möchte das aber gerne separat haben.

@Abt
Würde für meinen Fall dann ein "managed Switch" (wie der von dir verlinkte?) ausreichen? Ich stecke ihn in einen LAN-Port meiner FritzBox und kann da mein eigenes Netz konfigurieren?

Thema: Eigenes Netzwerk hinter Router
Am im Forum: Smalltalk

Hi Leute,

hier sind ja bestimmt einige Experten die sich auch mit Netzwerktechnik auskennen.

Folgender Fall: ich habe einen WLAN-Router daheim mit dem alle Geräte verbunden sind.

Was ich möchte: ein eigenes "Firmennetz", d.h. da laufen ein paar Server, NAS, paar Clients. Die sollen auch Internet haben, vom WLAN Netz darf aber nicht darauf zugegriffen werden.

Würde es im einfachsten Fall reichen eine Kiste mit 2 Netzwerkkarten und pfSense hinzustellen und eine mit dem Router zu verbinden und an der anderen Netzwerkkarte einen Switch für die Firmengeräte oder bräuchte es dafür mehr? Der externe Zugriff auf Geräte im internen Netz wäre dann ja doppelt per Firewall abgesichert? Für VPN müsste ich den Port dann im Router und pfSense freigeben oder? Macht das Sinn? Das ganze soll möglichst einfach sein, vielleicht gibts auch passende Hardware für genau den Anwendungsfall?

Danke!

Thema: C# Konvertierung einer FormApp in eine KonsolenApp
Am im Forum: GUI: Windows-Forms

Genau deswegen [Artikel] Drei-Schichten-Architektur. Da ist es am Ende egal wie du es präsentierst.

Thema: TextTrimming - Nur Anfangsbuchstaben/-Zeichen der Wörter anzeigen lassen, aber wie?
Am im Forum: GUI: WPF und XAML

Zitat von newland_93
z.B. Player/Spieler 1 soll wenn das Fenster verkleinert wird sich zu P 1/S 1 ändern und nicht zu Play...
Oder bei mehr Buchstaben... Vorname Nachname zu Vor... Nach...


String.Substring Methode

Ist dein Problem jetzt das Kürzen des Strings oder das Verkleinern des Fensters?

Thema: Was genau ist der Vorteil vom Factory-Pattern?
Am im Forum: Grundlagen von C#

Danke T-Virus.

Ich glaube ich habe es soweit verstanden, der Factory übergebe ich dann z.B. meine Configuration, die Factory kümmert sich dann um die Erzeugung des gewünschten Products und weiß z.B. welche Section für die jeweilige Options genutzt wird und übergibt sie dem Product/erzeugt es.

Danke euch!

Thema: Was genau ist der Vorteil vom Factory-Pattern?
Am im Forum: Grundlagen von C#

Danke euch beiden für die Antworten.

Zitat
Dein Code Beispiel entspricht nicht dem Sinn einer Factory; daher vermutlich das Verständnisproblem.

Was ist daran falsch, hatte mich sogar an deinem von dir verlinkten Artikel orientiert:https://www.dofactory.com/net/factory-method-design-pattern
Verstehe da nicht ganz den Unterschied zu deinem Beispiel außer dem Interface.

Also eine Methode mit einem Switch & enum als Parameter, die mir dann die ConcreteFactory (z.B. AutoFactory) zurückgibt wäre auch eine Factory?

Thema: Was genau ist der Vorteil vom Factory-Pattern?
Am im Forum: Grundlagen von C#

Hi,

von .NET Entwicklern hört man ja recht oft "new is glue", deswegen wollte ich mich da auch mal etwas weiterbilden :D

Ich habe mal versucht ein einfaches Factory-Pattern umzusetzen. Es sollen (hier als Beispiel) Aktien aus verschiedenen Quellen importiert werden können (Xml, Json, Api,...).


    // Product:
    public abstract class StockImporter
    {
        public abstract List<Stock> GetStocks();
    }

    // ConcreteProduct:
    public class XmlStockImporter : StockImporter
    {
        public string _file;
        public XmlStockImporter(string fileLocation)
        {
            _file = fileLocation;
        }
        public override List<Stock> GetStocks()
        {
            // lese XML _file...
            return new List<Stock>();
        }
    }

    // Creator:
    public abstract class StockImporterFactory
    {
        public abstract StockImporter GetStockImporter();
    }

    // ConcreteCreator:

    public class XmlStockImporterFactory : StockImporterFactory
    {

        private string _Location;

        public XmlStockImporterFactory(string location)
        {
            _Location = location;
        }
        public override StockImporter GetStockImporter()
        {
            return new XmlStockImporter(_Location);
        }

    }

Möchte ich jetzt den XmlImporter nutzen würde ich den mit meinem Kenntnisstand so erstellen:


var factory = new XmlStockImporterFactory("C:/test.xml");
StockImporter importer = factory.GetStockImporter();
var stocks = import.GetStocks()...

Ich verstehe jetzt nicht genau was da der Vorteil ist, außer dass ich nicht direkt den XmlStockImporter erzeugen muss. Soll die Factory das "Erzeugen" übernehmen, dass ich bei aufwendigeren DIs mich nur in der Factory kümmere?

Zweite Frage:
Theoretisch bräuchte ich jetzt doch noch eine Factory oder gibt es da eine schönere Lösung?
Z.B. sowas:


public enum StockImporterType ...

public StockImporterFactoryProvider(StockImporterType type)
{
    select(....) // jeweiligen Typ zurückgeben
}

Thema: Warum mal Hangman-Spiel bei jedem Buchstabendruck oder gar nicht mehr?
Am im Forum: Grundlagen von C#

Ja, war natürlich auch gedacht dass man das in eine eigene Klasse steckt und so die Schichten etwas trennt.

Beispiel:


interface HangmanGame()
{
   void CheckLetter(char eingabe);
   string HiddenWord; // A _ _ _ ...
   int RemainingLetters;
   bool IsGameWon;
   event EventHandler NoLettersLeft;
...
}

// Edit:
und doch, das geht schon, wenn man das denn so machen möchte:https://stackoverflow.com/questions/6640198/linq-in-selecting-item-from-listviewitemcollections-in-c-sharp

Thema: Warum mal Hangman-Spiel bei jedem Buchstabendruck oder gar nicht mehr?
Am im Forum: Grundlagen von C#

Es wäre einfacher wenn du das mit Linq machst:
Pseudocode:


// Gibt es in der Liste noch den Buchstaben "A":
if items.Any(c => c.Tag=="A"){
// alle aufdecken
   items.Where(c=>c.Tag=="A").Select(d=>d.Text = "a")
   ...
}else{
// gibt keine in der Liste ==> eins weiter zeichnen
   Galgenzaehler++;
   ...
}

Thema: Welches OS ist zum Programmieren mit .NET Core am Besten geeignet?
Am im Forum: Smalltalk

Zitat von Borbes
Ich habe auch schon Probleme mit VS. Aber ich weiß nicht, ob es angebracht wäre, dass hier anzusprechen.

Meinst du Visual Studio auf Mac? Ich kann das dotnet CLI in Verbindung mit Visual Studio Core empfehlen. Vorallem wenn man aus dem Linux-/Kommandozeilen-Bereich kommt. Das funktioniert richtig gut und einfach, man muss sich aber erst etwas einarbeiten.


Noch zum Mac vs Dell XPS: ich habe beides und kann da deine Kritik nicht nachvollziehen. Du hast bessere Hardware zum niedrigeren Preis und die Verarbeitung ist min. genauso gut naja aber das empfindet vielleicht jeder anders.

Thema: Welches OS ist zum Programmieren mit .NET Core am Besten geeignet?
Am im Forum: Smalltalk

Zitat von Poly

Du hattest explizit das 13er XPS aussen vor genommen. Hat das keine Probleme mit der Wärmeentwicklung?

Ich nutze beruflich den XPS 15 und bin sehr zufrieden damit.

Bzgl. Linux für Entwickler, ich schätze die Kritik kommt jetzt ehr in Bezug auf .NET/Windows Entwicklung. Allgemein kann ich das nicht bestätigen. Ich war auch schon in Unternehmen die fast ausschließlich Linux Systeme für ihre Entwickler zur Verfügung stellten und damit sehr gute Erfahrungen gemacht haben. Alles eine Frage der Angewohnheit.

Thema: Wie werden mehrere Forms über Veränderungen benachrichtigt?
Am im Forum: GUI: Windows-Forms

Du könntest eine Klasse machen die alle Fensteraufrufe verwaltet und eine Liste mit Referenzen der Windows hält. Dann könntest du dich noch an das FormClosing-Event hängen um mitzubekommen wenn eins geschlossen wird.

Thema: Wie binde ich das dynamische Laden von Plugins in den Programmablauf ein?
Am im Forum: Code-Reviews

Okay, danke euch beiden. Dachte es würde evtl. einen eleganteren Weg, Pattern, etc. geben.
Dann werde ich es erstmal so machen.

Eine Frage noch zu diesem Thema. Vielleicht kann man es auch in einen eigenen Thread trennen:


Ich habe ein ViewModel mit den Controls der Plugins. z.B.:



public class PluginsViewModel : BaseViewModel
{
      private List<MenuItem> _ContextMenuItems;
      public List<MenuItem> ContextMenuItems { get { return _ContextMenuItems; }}
...
}


Darin fülle ich dann, falls vorhanden, die von den Plugins zurückgegeben MenuItems.


Jetzt kann ich per XAML ja direkt die Items binden:


<MenuItem Header="Extras" ItemsSource="{Binding MyPluginsViewModel.ContextMenuItems}"/>

Gibt es einen Weg wenn ich per XAML schon Subitems definiert habe diese noch zu Erweitern? Ohne Codebehind und ohne die bereits vorhandenen Items im ViewModel dynamisch hinzuzufügen.


<MenuItem Header="Extras">
   <MenuItem Header="Bla">
   ...
   // Hier die ContextMenuItems hinzufügen
</MenuItem>

Thema: Wie kann ich im C# Werte berechnen, so wie Excel das auch macht?
Am im Forum: Rund um die Programmierung

Bzgl. Optimierung / Annäherung an Null kenne ich das Newtonverfahren. Vielleicht hilft das hier auch.

Thema: Wie binde ich das dynamische Laden von Plugins in den Programmablauf ein?
Am im Forum: Code-Reviews

Hi,

leider finde ich zum Thema Plugins nicht viel. Zumindest wenn es über eine Funktion aufrufen hinausgehen soll.
Mein Problem ist nicht das Laden der DLLs usw. sondern die Architektur des Programmes.

Mein Ansatz war bisher folgender:

Ich habe ein Interface des Pluginhosts (das stellt mein Hauptprogramm dar). Die Plugins bekommen das PluginHost Objekt übergeben und können sich an Events binden oder später auch darüber auf Datenbank, etc. zugreifen.


    public interface IPluginHost
    {
        event EventHandler ApplicationStarted;

    }

Mein Hauptprogramm erstellt sich dann das Hostobjekt und triggert die Events bei Bedarf bzw. stellt später die Felder zur Verfügung.



    public class PluginHost : IPluginHost
    {
        private List<IPlugin> _plugins = new List<IPlugin>();

        public event EventHandler ApplicationStarted;

        public virtual void OnApplicationStarted(EventArgs e)
        {
            EventHandler handler = ApplicationStarted;
            handler?.Invoke(this, e);
        }


        public PluginHost()
        {
            // Test-Plugin laden:
            _plugins.Add(new TestPlugin.MyPlugin(this));
            

        }
    }

// in der Application_Startup z.B.:
private void Application_Startup(object sender, StartupEventArgs e)
{
            // Plugin Host initalisieren:
            PluginHost pluginHost = new PluginHost();

            // ... Programm lädt ....

            // Execute Plugin ApplicationStarted:
            pluginHost.OnApplicationStarted(e);
 }



Das Plugin sieht dann z.B. so aus:



    public class MyPlugin : IPlugin
    {


        public MyPlugin(IPluginHost host)
        {
            host.ApplicationStarted += Host_ApplicationStarted;
        }

        public string Title => "Test-Plugin";

        private void Host_ApplicationStarted(object sender, EventArgs e)
        {
            Debug.WriteLine("Ich bin auch da!");
        }
    }



Jetzt meine Frage, gibts da soweit bessere Möglichkeiten das umzusetzen?

Wenn ich jetzt z.B. Plugins die Möglichkeit geben will ein MenuItem zu bekommen, habe ich das mal so gesehen:
Das heißt die rufe die Funktionen im Plugin auf und sie können mir ein Item zurückgeben oder eben Null.


    public enum Menu
    {
        MainFile,
        MainExtra,...
    }

    public interface IPluginHost
    {
        event EventHandler ApplicationStarted;
        MenuItem GetMenuItem(Menu place);

    }

Wäre das soweit alles, auch in Bezug auf .NET Core richtig oder habt ihr bessere Beispiele/Ideen?
Da das alles ziemlich tief in den Programmablauf eingebunden wird will ich es natürlich auch richtig machen

Thema: Wie kann ich eine XML-Datei schreiben?
Am im Forum: Grundlagen von C#

Steht doch da:


                        new XElement("WORKORDER",
                            new XAttribute("GTIN", gtin),
                            new XAttribute("WORKORDER_CODE", workorder_code),
                            from el in xmlTree1.Elements()
                            select el


Könntest natürlich auch anders machen Ist immer gut wenn man vom eigenen Code keine Ahnung hat was passiert :D

Thema: Wie liefere ich CSV Dateien mit ASP.NET MVC aus?
Am im Forum: Web-Technologien

Die Methode mit csv-Dateien ist wahrscheinlich immer besser und kompatibler wenn es sich um einfache Daten handelt.
Es geht aber auch relativ einfach direkt XLS-Dateien zu bearbeiten:

Gewusst wie: Erstellen eines Spreadsheet-Dokuments durch Angeben eines Dateinamens (Open XML-SDK)

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

Kann man noch einbauen dass man an zwei Geräten gleichzeitig eingeloggt sein kann? Das wäre sehr praktisch.