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 Duesmannr
Thema: Expression<Func> Mapping - InvalidOperationException - Could not be translated
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Als Nachtrag, hab es über Automapper geschafft.
Aber nicht das ganze Objekt direkt, sondern die Properties einzelnt zu mappen.

Man braucht dafür das Nuget Package von Automapper 'AutoMapper.Extensions.ExpressionMapping'.
Und dann muss man noch beim hinzufügen des Automappers im Service die Methode aufrufen


automapper.AddExpressionMapping();

//So sieht das dann ganz aus
services.AddAutoMapper((serviceProvider, automapper) =>
            {
                automapper.AddExpressionMapping();
                automapper.AddProfile<AutoMapping>();
            }, typeof(ApplicationDbContext).Assembly);

Das hatte ich davor auch schon alles.

Was ich nun mache, das ich die einzelnen Properties vom Specification Objekt durch gehe und diese mappe:


protected virtual ISpecification<TEntity> MapSpecification(ISpecification<TDTOEntity> specification)
        {
            Expression<Func<TEntity, bool>> criteriaExpression = this.Mapper.Map<Expression<Func<TEntity, bool>>>(specification.Criteria);

            ISpecification<TEntity> result = new BaseSpecification<TEntity>(criteriaExpression);

            foreach (Expression<Func<TDTOEntity, object>> includeDTOExpression in specification.Includes)
            {
                Expression<Func<TEntity, object>> includeExpression = this.Mapper.Map<Expression<Func<TEntity, object>>>(includeDTOExpression);

                result.AddInclude(includeExpression);
            }

            specification.IncludeStrings.ForEach(x => result.AddInclude(x));

            result.AddPaging(specification.PagingSpecification);

            return result;
        }

Und das funktioniert auch. Nur unvorteilhaft, wenn Properties dazu kommen, muss man diese ebenfalls mit aufnehmen.

Thema: Expression<Func> Mapping - InvalidOperationException - Could not be translated
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Nabend Leute,

Verwendete Systeme/Bibs: EF Core 5, Automapper

Ich kann von der UI eine Specification erhalten, die verschiedene Properties enthält, um den Get Request zu steuern.


public interface ISpecification<TEntity>
    {
        #region Properties

        Expression<Func<TEntity, bool>> Criteria { get; }

        List<Expression<Func<TEntity, object>>> Includes { get; }

        List<string> IncludeStrings { get; }

        PagingSpecification PagingSpecification { get; }

        #endregion //Properties

        #region Methods

        void AddInclude(Expression<Func<TEntity, object>> includeExpression);

        void AddInclude(string includeString);

        void AddPaging(PagingSpecification pagingSpecification);

        #endregion //Methods
    }

Das TEntity ist bei mir ein DTO.
Und in der BLL will ich dann die Specification<DTO> zu Specification<Entity> mappen.

Das würde z.B. ankommen:


ISpecification<CategoryDTO> specification = new BaseSpecification<CategoryDTO>(x => x.Id == idToGet);
//idToGet = Guid variable.


Mit Automapper schaffe ich es nicht, es zu mappen. Der Wert ist immer null. (Criteria)
Deshalb manuell mappen.
Wie mappt man eine Expression? I dont know => google.

Bin dann auf den Eintrag gestoßen.

Wobei ich bei der _parameter Variable das 'c' entfernt habe.
Mapping erfolgreich.

1. Bild im Anhang: So sieht es dann im Debugger aus.

Lass ich die Expression nun gegen die Db laufen, erhalte ich eine InvalidOperationException, sobald ich auf den Entites mit Where und dem Criteria filtere.
Message:

The LINQ expression 'DbSet<Category>()
    .Where(c => x.Id == __idToGet_0)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See [url]https://go.microsoft.com/fwlink/?linkid=2101038[/url] for more information.

In der Message steht "c => x.Id....".
Ich gehe davon aus, dass es an dem "c" liegt. Aber woher kommt das?

P.S.: Ich weiß wie Expressions oberflächlich funktionieren, aber so genau, wie man diese mappt, woraus die konkret bestehen weiß ich nicht. Deswegen habe ich vorerst die Methoden aus dem SO Beitrag 1:1 übernommen.

Grüße
Duesmannr

Thema: Wie kann ich eine USB-Hardware-Sperre programmieren?
Am im Forum: Grundlagen von C#

Geht von Haus aus.

Und auf den Geräte-Manager oder Regedit zugreifen zu können, muss man Admin sein.

10 Sekunden gegooglet.

Erste Seite

Zweite Seite

Thema: Netzwerk Adapter Name ändern
Am im Forum: Netzwerktechnologien

Durch die Google Suche von @Abt findet man folgende Stackoverflow Einträge:

how-to-change-the-name-of-a-networkadapter-in-c
get-name-of-network-that-a-network-interface-is-connected-to

Thema: WPF DataGrid - Refresh single Item
Am im Forum: GUI: WPF und XAML

Zu den Methodenaufruf


OnPropertyChanged()
würde ich keine magic strings nehmen, sondern


nameof(PropertyName)

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

Moin,

WinForms ist eine Konsolenanwendung.
Es gibt in deinem Projekt die Program.cs, die die Form aufruft.

Das ist der Einstiegspunkt in deiner WinForms Anwendung und in einer Konsolenanwendung ist es ebenfalls der Einstiegspunkt.

Da du die GUI dann nicht brauchst, kannst du die Logic in die Program.cs implementieren die dann 24/7 läuft oder immer wieder ausgeführt wird.

Erstell doch mal eine Konsolenanwendung und guck es dir an, ist sehr einfach.

Grüße

Thema: Warum geht ein Request zum FileUpload im PostMan durch aber im HttpClient gibt es Fehler?
Am im Forum: Netzwerktechnologien

Nabend :)

versuche seit Gestern ein Postman Request nachzubauen mit dem HttpClient, den ich über den Proxy von einer Anwendung abgefangen habe. (POST Request)

Der Request lädt eine Datei hoch.

Anbei ein Foto von Postman mit den ganzen Request Headers.
Und hier der raw Body vom Request:

----------010521174505517
Content-Disposition: form-data; name="sess_id"

aravtx27odgrsoba
----------010521174505517
Content-Disposition: form-data; name="file"; filename="testfile.txt"
Content-Type: application/octet-stream

****file content****
----------010521174505517--

Die Authentication läuft über die "sess_id".

In der API Doku steht nur das (und der Support schreibt nur Einzeiler als Antwort)

Endpointhttps://api-v2.ddownload.com/api/upload/server?key=key

Parameters
key : String : API key Example: 1hj124iod23j12gd3

Response

{
    "msg": "OK",
    "server_time": "2017-08-11 04:29:54",
    "status": 200,
    "result": "https://s1.ddownload.com/upload/01"
}

Mein Code ist wie folgt:

Service service = new("api key", null);

            using FileStream fs = File.Open(@"C:\Users\User\Downloads\testfile.txt", FileMode.Open, FileAccess.Read);

            Result<string> result = await service.GetServerUrlAsync();

            string boundary = "--------" + DateTime.Now.Ticks.ToString("x");

            StreamContent sc = new(fs);
            sc.Headers.ContentType = new("application/octet-stream");

            MultipartFormDataContent content = new(boundary)
            {
                { new StringContent(result.SessionId), "sess_id" },
                { sc, "file", "test.dat" }
            };

            content.Headers.ContentType = new("multipart/form-data");

            try
            {
                HttpResponseMessage response = await service.Client.PostAsync(result.Response, content);
                string responseString = await response.Content.ReadAsStringAsync();
            }
            catch (Exception ex)
            {

            }

Service: Erstellt einen default HttpClient.
service.GetServerUrlAsync(): ruft die oben angegeben Endpoint Adresse auf, wo ich als response die Session ID und die URL zum hochladen bekomme.

Response hat einen 200er.
Im Content steht nur:
<h1>Internal Server Error</h1>\n<p>The server encountered an internal error or\nmisconfiguration and was unable to complete\nyour request.</p>

Übersehe ich etwas? Oder fehlt irgendetwas, was man bei dem Request nicht sieht?

Grüße
duesmannr

Thema: Migration von WebClient zu HttpClient: Bildupload liefert mit HttpClient ein leeres Bild
Am im Forum: Netzwerktechnologien

Zitat von Abt
PS: kurz gegoogelt. Die Webseite bietet sehr wohl eine API; wenn auch sehr rudimentär.
https://www.directupload.net/api/upload.php

Das habe ich auch nie verleugnet.
Nur das die keine Dokumentation dafür besitzen bzw. nicht öffentlich ist.

Thema: Migration von WebClient zu HttpClient: Bildupload liefert mit HttpClient ein leeres Bild
Am im Forum: Netzwerktechnologien

Zitat von Abt
Die Seite arbeitet mit Content-Type: multipart/form-data; und nicht mit binary/octet-stream.

Der WebClient Code Schnipsel kommt aus deren eigenem Uploader Tool.

Ich habe auch schon versucht mit dem HttpClient und dem MultipartFormDataContent den Request zu senden. Aber gleiches Ergebnis wie beschrieben.

Thema: Migration von WebClient zu HttpClient: Bildupload liefert mit HttpClient ein leeres Bild
Am im Forum: Netzwerktechnologien

Zitat von Abt
Gib doch den potentiellen Helfern ein wenig mehr Infos zur API.... Name? Docs?

Es gibt keine API Dokumentation.
Der Image Hoster ist der hier.

Thema: Migration von WebClient zu HttpClient: Bildupload liefert mit HttpClient ein leeres Bild
Am im Forum: Netzwerktechnologien

Nabend,

ich hänge gerade dabei, den WebClient Request zu einem HttpClient Request zu konvertieren.

Der WebClient Request sieht wie folgt aus und funktioniert auch:


string testImagePath = @"Path.png";

            WebClient client = new();

            client.UploadFileCompleted += Client_UploadFileCompleted;

            client.Headers.Add("Content-Type", "binary/octet-stream");
            Uri address = new("API Endpunkt");
            client.UploadFileAsync(address, "POST", testImagePath);

Mein Versuch mit HttpClient sieht wie folgt aus:


string testImagePath = @"Path.png";
            byte[] imageBytes = File.ReadAllBytes(testImagePath);

HttpClient httpClient = new();
            httpClient.DefaultRequestHeaders.Clear();
            httpClient.DefaultRequestHeaders.Accept.Add(new("*/*"));

            ByteArrayContent byteArrayContent = new(imageBytes);
            byteArrayContent.Headers.ContentType = new("binary/octet-stream");

            var resp = await httpClient.PostAsync("API Endpunkt", byteArrayContent);
            var content = await resp.Content.ReadAsStringAsync();

Habt Ihr eine bessere Idee, bzw. was mache ich falsch?

Grüße und schöne Weihnachten :)

P.S.: Es handelt sich um einem Imagehoster. Die Variante mit dem WebClient liefert lediglich einen String mit der URL zu dem hochgeladenen Foto. Die Variante mit dem HttpClient liefer ebenfalls eine URL zurück, nur wenn ich diesen aufrufe, kommt ein leeres Bild vom Hoster. Quasi "Image not Found" Bild.

Thema: Wie kann ich in einer Consolen-App mehrere Zeilen ohne flackern aktualisieren?
Am im Forum: Grundlagen von C#

@Th69 habe ich nach deiner Antwort auch versucht. Ändert nichts daran.
Hab aber herausgefunden das er "\t" nicht mag. Habe jetzt manuell mit Whitespaces gefüllt und es geht halbwegs.

Zitat von FZelle
Neulich beim Hanselman diesen Blog gesehen, wäre das nicht was?
Spectre.Console lets you make beautiful console apps with .NET Core

Sieht auf dem 1. Blick sehr gut aus. Gucke ich mir an. Danke!

Thema: Ich wünsche mir mehrere Bilder als Anhang
Am im Forum: Wünsche und Kritik

Danke Abt für die schnelle Antwort.

Dann mal warten :)

Thema: Ich wünsche mir mehrere Bilder als Anhang
Am im Forum: Wünsche und Kritik

Nabend,

hab den Wunsch nicht auf die schnelle über die Suche gefunden, deswegen schreibe ich es mal.

Ich würde es mir wünschen, dass man mehrere Anhänge an einen Beitrag anhängen könnte als einen.

Wenn man bspw. Bilder anhängen will (2, 3 Stück) wäre das deutlich einfacher.

Was haltet Ihr davon?

Grüße

Thema: Wie kann ich in einer Consolen-App mehrere Zeilen ohne flackern aktualisieren?
Am im Forum: Grundlagen von C#

Nabend,

ich wusste nicht, in welchen Unterbereich ich es posten sollte. Falls es hier falsch ist, gerne verschieben.

Ausgangssituation:
- Console Application .NET 5
- Downloader von Files (in verschiedenen Threads)

Ziel:
- Anzeigen vom aktuellen Status des Downloads
(Name der Datei, wie viel wurde heruntergeladen in %, wie viel wurde heruntergeladen in double,
wie groß ist die Datei)

Versuchte Lösungen:

Console.SetCursorPosition(x, y);

Console.Write("\rText");
- Überschreiben der beschriebenen Zeilen mit Leerzeilen, weil das rewrite mit \r wohl laut stackoverflow nicht alle characters löscht.

Hier einmal der Code dazu:


public static void LogDownload(ITransferProgress progress, DownloadItem downloadItem)
        {
            string filename = Path.GetFileName(downloadItem.OutputPath);

            Console.SetCursorPosition(0, downloadItem.CursorTopPosition);

            string outputString = $"{filename}\t\t\t\t{progress.PercentComplete:P}\t|\t" +
                $"{progress.CurrentFileSize:0.##} {progress.CurrentFileSizeSuffix} / {progress.FileSize:0.##} {progress.FileSizeSuffix}";

            //ClearText(outputString, 0, downloadItem.CursorTopPosition);

            Console.Write($"\r{outputString}");
        }

        private static void ClearText(string text, int x, int y)
        {
            Console.SetCursorPosition(x, y);

            for (int i = 0; i < text.Length; i++)
            {
                Console.Write(" ");
            }

            Console.SetCursorPosition(x, y);
        }

Das ganze funktioniert auch halbwegs (flackert dann nur), wenn es nur eine Zeile ist. Nur wenn mehrere Zeilen geschrieben werden,
a) flackerts
b) der Text ist irgendwo, wo er nicht hin soll und doppelt

Hier auch einmal der Output mit mehreren Downloads. Output ist genau so, wie der oben genannte Code.

Wisst Ihr wie man das besser / performanter, ohne flackern und das alles richtig angezeigt wird umsetzen kann?

Ich gehe davon aus, dass ich zu viel neu schreibe, aber dann fällt mir auch keine andere Lösung ein.

Grüße

Thema: Warum kann nach Migration auf .NET 5 und EFCore keine Instanz vom DbContext mehr erstellt werden?
Am im Forum: Datentechnologien

Zitat von Palladin007
Also entferne mal den Konstruktor mit den Options, ich könnte mir vorstellen, dass es dann funktioniert - vorausgesetzt, der DbContext kann sich selber konfigurieren. Besser wäre aber, Du nutzt die Factory und ziehst die Konfiguration raus..

Dann funktioniert es.

Thema: Warum kann nach Migration auf .NET 5 und EFCore keine Instanz vom DbContext mehr erstellt werden?
Am im Forum: Datentechnologien

Zitat von T-Virus
Das scheint es noch ein Problem mit Interfaces zu geben, was du ggf. haben könntest.

Das Problem habe ich gar nicht. Also ich nutze gar keine Interfaces oder sonst was.
Die User Klasse hat nur 3 Properties und die ganze Class Library hat 2 Klasssen (User und ApplicationDbContext).


Es gibt einen "Workaround" dafür, indem man in der gleichen Assembly eine ContextFactory hat:


public class ContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
    {
        public ApplicationDbContext CreateDbContext(string[] args)
        {
            DbContextOptionsBuilder<ApplicationDbContext> optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();

            return new(optionsBuilder.Options);
        }
    }

Damit lassen sich nun Migrationen erstellen.

Aber würde das gerne ohne den "Workaround" machen.

Thema: Warum kann nach Migration auf .NET 5 und EFCore keine Instanz vom DbContext mehr erstellt werden?
Am im Forum: Datentechnologien

Hey,

ich migriere gerade meine Projekte auf .NET 5 und so auch EF Core.

Nun ist mir ein Problem bei der Erstellung der Migrationen aufgefallen.

Ausgangssituation zum erstellen der Migrationen.
1. .NET 5 Class Library mit dem DbContext
Installierte NuGets:
Microsoft.EntityFrameworkCore 5.0.0
Microsoft.EntityFrameworkCore.SqlServer 5.0.0


public class ApplicationDbContext : DbContext
    {
        #region DbSets

        public DbSet<User> Users { get; set; }

        #endregion

        public ApplicationDbContext(DbContextOptions options) : base(options)
        {
        }

        public ApplicationDbContext() : base()
        {
        }
    }

2. Test Projekt .NET 5 was ich als Start Projekt ausgewählt habe und via der Package Manager Console
add-migration Initial
ausführe. (Default Projekt ist die Class Library).

Bis meinen installierten NuGet Versionen von 3.1.8 funktionierte es auch, weil das Test Projekt ausführbar ist.
Nach updaten auf .NET 5 erhalte ich folgende Fehlermeldung:
Fehler
PM> add-migration Initial
Build started...
Build succeeded.
Unable to create an object of type 'ApplicationDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728

In den Breaking Changes von EF Core 5 habe ich keine Änderungen gefunden, die das behindern sollten.

In den Github Issues von efcore habe ich den Artikel gefunden, dass es bei einem funktioniert, der das sagt:
Zitat
You can add an option such as sqlOptions.MigrationsAssembly();

Habe ich auch gemacht, gleiche Fehlermeldung. Bzw. erwartet die Methode einen Parameter, die Assembly. Habe ich ebenfalls hinzugefügt, aber ändert nichts.

Habt Ihr eine Lösung dafür?
Oder einen Ansatz?

Grüße

Thema: Wie kann ich den Inhalt einer Liste mit Objekten in eine Textdatei speichern?
Am im Forum: Grundlagen von C#

Warum kannst du das MVVM Pattern nicht nutzen?

Du sagst

objWriter.WriteLine(Timers.ToString());

Was dir in dem Fall nicht weiterhilft, weil du ein

.ToString()
auf die gesamte Collection machst.

Du musst die Collection iterieren


foreach(Timer timer in Timers)
{
    objWriter.WriteLine(timer.ToString());
}

objWriter.Close();

Und am Ende musst du den Writer noch schließen, sonst ist die Datei zwar erstellt, aber leer.

Und die

ToString()
Methode musst du auch in deiner Timer Klasse überschreiben und dir den String zusammenbauen, den du erhalten willst, wenn du die Methode aufrufst.

Thema: Werte von einer Form an andere weitergeben
Am im Forum: Grundlagen von C#

Zum aufrufen einer neuen Form, erstellst du ein Objekt von der Form.
Dann kannst du beispielsweise über den Konstruktor Parameter übergeben oder über public Properties die du dann setzen kannst.

Thema: Warum wirft EF Core mit gemappten Entitäten eine "is already being tracked." Exception?
Am im Forum: Datentechnologien

Moin,

wenn man keine Antworten erhält, versteht man entweder das Problem/die Frage nicht oder weiß keine Lösung.
Ersteres weiß ich nicht, wie ich es noch besser Beschreiben soll, weil ich mMn sehr viele Informationen liefere mit einem Git Repo, worin man das Problem reproduzieren kann.

Aber wer auch immer den Titel geändert hat, hat das Problem nicht verstanden.
Der Mapper wirft keine Exception, sondern EF Core beim Hinzufügen der Entity zum DbSet.

Hoffe trotzdem, dass jemanden evtl. was einfällt, weil mir tut es nicht, obwohl ich mich bis dato immer noch damit beschäftige.

Grüße

Thema: Wie kann ich im DataGridView alle Ergebnisse in eine Zeile einfügen (nicht in mehrere)?
Am im Forum: GUI: Windows-Forms

Nutz doch bitte die Code Tags.

[*CSHARP][*/CSHARP] (ohne *)

Nur für den Code, nicht für den ganzen Beitrag.

Thema: Habt ihr eine Kreditkarte, die ihr aktiv benutzt? Warum/Warum nicht?
Am im Forum: Smalltalk

Zitat von Coffeebean
inspiriert von diesem Thema Wie kann ich mich auf Azure ohne Kreditkarte registrieren? wollte ich mal hören ob ihr eine Kreditkarte habt und diese auch aktiv nutzt?

Der Link funktioniert nicht.

Edit: Ok, hast den Link geändert :)

Zum Thema.
Ich hatte immer nur eine normale Bankkarte und bin dank eines Kollegens auf "Vivid" aufmerksam geworden.
Prepaid Kreditkarten System. Habe eine virtuelle und eine physische.
Ich mache soviel wie möglich über die App davon, weil es einfach viel übersichtlicher und schneller ist, als mein Girokonto.

Also ja, ich nutze überall wo ich kann meine Kreditkarte.

Thema: Warum wirft EF Core mit gemappten Entitäten eine "is already being tracked." Exception?
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <eig. MySQL>

Mahlzeit,

ich verwende AutoMapper um meine Entitäten von und zu DTO Entitäten zu mappen, funktioniert auch ohne Probleme.

Das Problem kommt erst, wenn ich dann mit der gemappten Entität arbeite.

Ich habe eine Translation Entity und eine Language Entity. (1:n)
Language hat n Translations.


Language language = applicationDbContext.Languages.FirstOrDefault(x => x.Name == "pl-t");
LanguageDTO mappedLanguage = new LanguageDTO();

mapper.Map(language, mappedLanguage);

//Input from ui
TranslationDTO translation = new TranslationDTO
{
    Identifier = "dtoTrans",
    Text = "dtoTrans",
    Language = mappedLanguage, //Does not work
    LanguageId = mappedLanguage.Id, //Works
    Id = Guid.NewGuid()
};

Translation trans = new Translation();
mapper.Map(translation, trans);

applicationDbContext.Translations.Add(trans); // Exception

Im Code Beispiel hole ich mir eine Language aus der Datenbank (Könnte auch eine neue erstellen, ist aber irrelevant) und mappe diese zu einem DTO.

Erstelle dann eine DTO Translation Entity (kommt bspw. von der UI) und würde dann im normalen Code die Navigation Property "Language" setzen und dann in der Datenbank erstellen.
Was ohne Mappen auch wunderbar funktioniert, mit Mapping erhalte ich diese Fehlermeldung:
Fehler
The instance of entity type 'Language' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.


Hab dazu den Thread auf Stackoverflow gefunden und den Aufruf der Map Methode wie in der Antwort geändert. Hatte das genau so wie sein 1. Beispiel (aus der Antwort).
Hilft auch nicht.

Setze ich aber nur die ID anstatt die ganze Entity, funktionierts.
Ich finde aber zu dem Problem explizit auch keine Lösung, wie man das Mappen umstellen soll.
Man kann die Entity dann noch De/-Attachen aber ist dann auch wieder mehr Aufwand.

Hier ist einmal das Git Repo. Ist ein Test Projekt, was diesen Fehler produziert.

Als explizite Frage nochmal. Was genau mache ich falsch bzw. was muss ich ändern, dass die Fehlermeldung nicht mehr erscheint?

Thema: Kann man Konsole im Visual Studio immer offenhalten?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat von snapCode
Meine Frage ist jetzt, ob man Visual Studio so einrichten kann das ich diese Konsolenausgabe in Visual Studio direkt als Fenster nutzen kann ohne das sich ständig etwas öffnet oder schließt?

Es gibt unter den Options => Debugging => General den Punkt "Automatically close the console when debugging stops". Damit bleibt das Konsolenfenster immerhin offen sobald VS das Debugging wieder beendet.
Zitat von snapCode
Kann ich GIT weiter verwenden um einen Commit, Snapshot und einen Brach zu erstellen?

Siehe @Taipi88 Kommentar. Ich nutze die VS Git Integration. Sobald der Ordner mit einem Git Repo verbunden ist, kannst du unter dem Fenster "Team Explorer" alle Git Funktionen nutzen.

Thema: Wird C# aussterben? (Spoiler: Nein)
Am im Forum: Smalltalk

Zitat von snapCode
ich habe mich gerade hier angemeldet, da ich mich entschlossen habe C# mal aus zu probieren.
Dann lese ich direkt hier im Forum über das vermutliche ableben von C#?
Ist ja nicht direkt vertrauenserweckend.

Wie du es aus diesem Thread, dem ganzen Forum und den Twitter Antworten entnehmen kannst, wird C# uns noch lange begleiten.

Ich wollte nur eine Diskussion zu dem Artikel anstoßen und die Meinung der User hören.
Und damit nicht signalisieren, dass C# auf kurz oder lang "aussterben" wird.

Thema: Wird C# aussterben? (Spoiler: Nein)
Am im Forum: Smalltalk

Heute in der monatigen Ausgabe der dotnetpro Zeitschrift Die Uhr tickt: Warum Avision den Umstieg von C# auf Java empfiehlt gesehen.

Laut Avision bzw. Nadine Riederer wird C# auf kurz oder lang von Microsoft nicht mehr supported.
Man solle doch auf Java umsteigen.

Wie steht ihr zu der Aussage von Frau Riederer?

Meine Meinung dazu ist, durch die ganzen Änderungen die Microsoft derzeit macht (dotnet 5, Blazor) wird C# lange erhalten bleiben und halte die Aussage für kompletten Schwachsinn.

Thema: Wie kann ich eine Datei erstellen?
Am im Forum: Grundlagen von C#

Änder mal das FileStream using zu


using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate))
      {
        stream.Write(array, 0, array.Length);
        stream.Close();
      }

Dann funktioniert es.

Thema: Wie benutze ich Dependency Injection im Business Layer richtig?
Am im Forum: Rund um die Programmierung

Ja sowas meine ich Taipi, dass wäre ein Lösungsansatz.
Nur gibt es dann halt die Abhängigkeit wie Abt richtig gesagt hat.

Ich guck mir mal das Repo von AutoMapper an.

Thema: Wie benutze ich Dependency Injection im Business Layer richtig?
Am im Forum: Rund um die Programmierung

Zitat von Taipi88
Um auf dein Beispiel zurückzukommen:
Wenn BLL1 die BLL2 braucht - dann bekommt sie diese eben per Konstruktor. In der eigentlichen Anwendung (dort in der Startup z.B.) kann man das dann gerne als Singleton via DI umsetzen[...]

Moin Taipi,

dass ist ja mein Plan, dass ich die einzelnen BLL via Konstruktor erhalte, was ja möglich ist.
Das Problem ist nur, dass ich irgendwo die ganzen Singletons registrieren muss. Ja dies wird eigentlich in der Startup Klasse gemacht oder halt da, wo das Programm gestartet wird.

Nur ist das Beispiel oben von mir eine Library die ich via NuGet an meine Projekte verteile. Und will dennoch DI nutzen können.

Da komm ich dann zu meiner letzten Frage zu Abt
Zitat von duesmannr
Also meinst du, dass ich bei der Dokumentation dem Entwickler sagen soll
Dass er irgendein DI Framework nutzen muss und dann eine Liste mit Interfaces und Klassen dazu schreibe, die registriert werden müssen?

Das ich dem Entwickler(mir) dann eine Liste mit Singletons gebe, die registriert werden müssen, damit die Library funktioniert.

Und das ist auch keine schöne Lösung, deswegen hatte ich hier erhofft eine Lösung zu finden :)