Ein Dictionary als DataSource

Ich habe ein Dictionary nach folgendem Schema:

var dic = new Dictionary<string, string>()
       	{
	{"de", "Deutsch"},
	{"en", "Englisch"}
       	};

Die Werte möchte ich in einer ComboBox haben, die Values als anzuzeigenden Text, die Values soll er mir im Code zurückgeben. Ein Dictionary kann man jedoch nicht direkt als DataSource binden. Da die Lösung selbst bei Google etwas versteckt ist, hier die Lösung:

combobox1.DataSource = new BindingSource(dic, null);
combobox1.DisplayMember = "Value";
combobox1.ValueMember = "Key";

Und schon werden alle Einträge aus dem Dictionary angezeigt 🙂

(via Mad Props)

Wie bringe ich mich selbst zum Kommentieren meines Codes?

Man ist ja selbst etwas faul. Meist weiß man, was sein Code so macht (oder besser machen sollte) und man kommentiert daher nur sehr sporadisch. Wenn man den Code dann eine Weile später wieder zur Hand nimmt, fällt es einem oft schwer seinen alten Code zu verstehen.
Daher gibt es Kommentare, in C# in Form des „<summary>„-Tags. Drei Slashes und Visual Studio fügt schon automatisch das Grundgerüst ein.
Damit nun auch wirklich jede public / internal Methode / Property kommentiert wird, muss man den Kompiler sagen, dass er fehlende Summaries als Fehler an erkennen soll.

Dazu geht ihr in die Projekteigenschaften und aktiviert unter dem Reiter „Erstellen“ den Hacken bei „XML-Dokumentationsdatei“. Nun erstellt er euch aus den Kommentaren bei jedem Build eine solche XML-Datei. Im Editor wird nun auch schon angemeckert, dass die XML-Kommentare fehlen. Um euch nun wirklich zu zwingen, sollte die Solution gar nicht erst gebaut werden, wenn die Kommentare fehlen. Das Fehlen wird als Warning gemeldet, daher sagen wir den Kompiler einfach, er soll Warnings als Fehler behandeln.
Dies geschieht ebenfalls in den Projekteigenschaften unter „Erstellen“. Evtl. kann man das noch verfeinern, indem man nur bestimmte Warnungen als Fehler behandelt, jedoch konnte ich auf die schnelle keine entsprechenden Informationen dazu finden. Ich versuche diese nachzureichen.

Von nun an lässt sich die Solution also nicht mehr kompilieren, sofern nicht überall Kommentare verfasst wurden. Um sich das Leben an dieser Stelle deutlich einfacher zu machen, empfehle ich die kostenlose Visual Studio Erweiterung GhostDoc. Mit ihr könnt ihr per Rechtsklick oder Tastenkombination eure Methode oder Property kommentieren. Dabei werden zum Beispiel schon vorhandene Kommentare aus Interfaces über Überladungen übernommen. Ansonsten erstellt er anhand des Methodennamen eine entsprechende Dokumentation. Man kann sich auch eigene Templates anlegen (habe ich mir sagen lassen). Gebündelt mit einem ordentlichen Programmierstil (bei der Namensgebung) kann man so bestimmt 80% automatisch kommentieren. Eine unglaubliche Zeitersparnis.

WinMerge mit AnkhSVN nutzen

Sollte jemand von euch AnkhSVN in Visual Studio nutzen und ihr möchtet eure Dateien mit WinMerge vergleichen oder mergen, dann müsst ihr unter Optionen -> Source Control -> Subversion User Tools folgende Befehle angeben

C:\Program Files (x86)\WinMerge\WinMergeU.exe /x /e /wl /ub /dl "$(BaseName)" /dr "$(MineName)" "$(Base)" "$(Mine)"

C:\Program Files (x86)\WinMerge\WinMergeU.exe /x /e /wl /ub /dl "$(TheirName)" /dr "$(MineName)" "$(Theirs)" "$(Mine)" "$(Merged)"

Den Merge-Befehl (der zweite) habe ich noch nicht getestet. Wichtig ist, dass die Anführungszeichen setzt. Sonst gibt es Probleme bei Leerzeichen und WinMerge will irgendwelche Verzeichnisse anstatt Dateien öffnen.