Als «c#» getaggte Fragen

C # ist eine multiparadigmatisierte, verwaltete, durch Müll gesammelte objektorientierte Programmiersprache, die von Microsoft parallel zur .NET-Plattform erstellt wurde


6
Was sind die Nachteile unveränderlicher Typen?
Ich sehe mich immer unveränderlicher Typen, wenn nicht erwartet wird, dass die Instanzen der Klasse geändert werden . Es erfordert mehr Arbeit (siehe Beispiel unten), erleichtert jedoch die Verwendung der Typen in einer Multithread-Umgebung. Gleichzeitig sehe ich in anderen Anwendungen selten unveränderliche Typen, selbst wenn die Veränderlichkeit niemandem nützen würde. …
12 c#  immutability 

1
Besuchermuster mit großer Objekthierarchie verwenden
Kontext Ich habe mit einer Hierarchie von Objekten (einem Ausdrucksbaum) ein "Pseudo" -Besuchermuster verwendet (Pseudo, da darin kein doppelter Versand verwendet wird): public interface MyInterface { void Accept(SomeClass operationClass); } public class MyImpl : MyInterface { public void Accept(SomeClass operationClass) { operationClass.DoSomething(); operationClass.DoSomethingElse(); // ... and so on ... } …

4
Geschäftsobjekte innerhalb einer Datenzugriffsschicht
Ich habe also eine Datenzugriffsschicht über TDD erstellt und bin etwas besorgniserregend geworden. Ich würde lieber nicht den falschen Weg einschlagen, also dachte ich mir, ich würde euch fragen, ob meine Gedanken mit einer sauberen Architektur übereinstimmen. Die Methoden in meiner Datenzugriffsschicht (kurz DAL) sind ziemlich einfach. Sie stimmen mit …


8
Ist eine Schnittstelle, die asynchrone Funktionen verfügbar macht, eine undichte Abstraktion?
Ich lese das Buch Prinzipien, Praktiken und Muster der Abhängigkeitsinjektion und lese über das Konzept der undichten Abstraktion, das im Buch gut beschrieben wird. In diesen Tagen überarbeite ich eine C # -Codebasis mithilfe der Abhängigkeitsinjektion, sodass asynchrone Aufrufe verwendet werden, anstatt solche zu blockieren. Dabei erwäge ich einige Schnittstellen, …

8
Ist es möglich, den Code vollständig außerhalb der Geschäftslogik zu protokollieren?
Mit Hilfe von AOP kann ich den Protokollierungscode aus meiner Geschäftslogik entfernen. Aber ich denke, es kann nur verwendet werden, um einfache Dinge zu protokollieren (dh Protokollierungsmethodenein- / -ausgang und Parameterwerte). Was ist jedoch, wenn ich etwas in meiner Geschäftslogik protokollieren muss? z.B public void SomeDomainMethod(string id) { //Get user …

4
Der sauberste Weg, logisch prozedurale Software in einer OO-Sprache zu schreiben
Ich bin Elektrotechniker und weiß nicht, was zum Teufel ich mache. Bitte speichern Sie die zukünftigen Betreuer meines Codes. Vor kurzem habe ich an einer Reihe kleinerer Programme (in C #) gearbeitet, deren Funktionalität logisch "prozedural" ist. Eines davon ist beispielsweise ein Programm, das Informationen aus verschiedenen Datenbanken sammelt, diese …

3
Gründe für die nicht intuitive Implementierung von C # String.Split ()
Wenn ich in C # eine stringdurch eine andere teilen möchte, muss stringich so etwas tun: testString.Split(new string[] { "anotherString" }, StringSplitOptions.None); Aus der überladenen String.SplitMSDN-Dokumentation können wir die Implementierung und den Grund für einen solchen Aufruf ersehen. Ich komme aus Python und kann nur schwer richtig verstehen, warum ein …

2
Ist die IComparable-Schnittstelle veraltet / "schädlich"?
IComparable funktioniert nur in eine Richtung Angenommen, Sie haben eine EmployeeKlasse. In einer Ansicht möchten Sie alle Employeesnach Namen sortiert anzeigen - in einer anderen nach Adresse. Wie wirst du das erreichen? Nicht mit IComparable, zumindest nicht in irgendeiner Weise. IComparable hat die Logik am falschen Ort Die Schnittstelle wird …
11 c#  sorting  comparison 

2
Unit Test zum Testen der Erstellung eines Domänenobjekts
Ich habe einen Unit Test, der so aussieht: [Test] public void Should_create_person() { Assert.DoesNotThrow(() => new Person(Guid.NewGuid(), new DateTime(1972, 01, 01)); } Ich behaupte, dass hier ein Personenobjekt erstellt wird, dh dass die Validierung nicht fehlschlägt. Wenn der Guid beispielsweise null ist oder das Geburtsdatum vor dem 01.01.1900 liegt, schlägt …

5
Ein Referenzzählmuster für speicherverwaltete Sprachen?
Java und .NET verfügen über wunderbare Garbage Collectors, die den Speicher für Sie verwalten, und über praktische Muster zum schnellen Freigeben externer Objekte ( Closeable, IDisposable), jedoch nur, wenn sie einem einzelnen Objekt gehören. In einigen Systemen muss eine Ressource möglicherweise unabhängig von zwei Komponenten verwendet und nur freigegeben werden, …

1
Wie kann ich das MVC-Muster auf eine C # WinForms-Anwendung anwenden?
Ich bin ein C ++ - Entwickler, der seitdem das MVC-Muster zum Entwerfen von GUIs verwendet. Vor kurzem wollte ich wieder in C # einsteigen und habe eine Windows Forms-Anwendung eingerichtet, aber jetzt bin ich ein wenig verloren, wie ich sie auf eine MVC-kompatible Struktur übertragen kann. Was ich derzeit …
11 c#  mvc  winforms 

4
Wie gebe ich eine Vorbedingung (LSP) in einer Schnittstelle in C # an?
Nehmen wir an, wir haben die folgende Schnittstelle - interface IDatabase { string ConnectionString{get;set;} void ExecuteNoQuery(string sql); void ExecuteNoQuery(string[] sql); //Various other methods all requiring ConnectionString to be set } Voraussetzung ist, dass ConnectionString gesetzt / initialisiert wird, bevor eine der Methoden ausgeführt werden kann. Diese Voraussetzung kann etwas erreicht …

3
Entity Framework und Vermeidung des anämischen Domänenmodells
In unserer Geschäftslogik haben wir gelegentlich Methoden wie diese definiert: User.ResetCourse(Course courseToReset) Das Problem ist, dass sowohl Benutzer als auch Kurs Entity Framework-Proxyobjekte sind. Dies bedeutet, dass das Aufrufen der Navigationseigenschaften für Benutzer oder Kurs einen großen Treffer für die Datenbank verursachen kann, da diese Objekte nicht IQuery-fähig sind und …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.