Boxing and Unboxing

Welche Variante gefällt Ihnen besser: Instinktiv werden die meisten erst einmal Variante a bevorzugen. 10.ToString() sieht einfach komisch aus. Dafür gibt es auch noch nicht einmal Unterstützung durch IntelliSense. Aber schauen wir uns mal Variante A genauer an: Die Zahlen sind Integer-Werte (und Integer-Werte sind Value-Typen!). Die Methode Console.WriteLine() hat aber keine Überladung, die Integer-Werte übernimmt. Sie übernimmt nur Paramter vom Typ System.Object. Wenn ein Wertetyp als Object verwendet wird, stellt der JIT-Compiler auf dem Heap eine Box in die eine Kopie des Objektes gelegt wird. Jeder Zugriff auf das Objekt erfolgt über eine Kopie aus der “Box”. Dieser Prozess … Continue reading Boxing and Unboxing

Cast vs. As/Is-Operator

C# ist ja eine stark typisierte Sprache (von dynamic in C# 4.0 abgesehen). Mit den “Generics” wurde der Bedarf der Typumwandlung auch sehr reduziert. Trotzdem gibt es immer wieder die Situation, in der man ein Objekt umwandeln muss. Zum Beispiel bei der Verwendung von Hashtables. In diesem Fall hat man 2 Möglichkeiten: Verwendung des AS-Operators Verwendung von Cast Ich denke es ist offensichtlich, dass die erste Variante übersichtlicher und damit wartbarer ist. Außerdem hat sie einen Geschwindigkeitsvorteil, wenn das Objekt nicht von dem entsprechenden Typ ist, da keine Exception geworfen wird. Wichtig ist, dass nicht erst mit IS geprüft wird, … Continue reading Cast vs. As/Is-Operator

Sandboxed Solutions und PropertyBags

In einer Sandboxed Solution den PropertyBag im Code zu setzen ist eine echte Herausforderung. Folgendes gibt es zu beachten: Properties steht nicht zur Verfügung. Nur AllProperties Wer AllProperties direkt setzt wird erstaunt sein, das die Änderungen einfach Still geschluckt werden Änderungen sind nur über die neuen Methoden SPWeb.AddProperty und SPWeb.SetProperty möglich Auch wenn die Methoden ein Object übernehmen darf man nur string werte übergeben. Sonst bekommt man eine NullReferenceException Continue reading Sandboxed Solutions und PropertyBags

Verwenden eines Wörterbuches für die Codeanalyse (Code Analysis Dictionary)

Um der Codeanalyse Eigennamen beizubringen, kann man dem Projekt eine “Dictionary” hinzufügen. Warning    6    CA1704 : Microsoft.Naming : Correct the spelling of ‘Alegri’ in assembly name ‘Alegri.SharePoint.FarmSolution1.dll’.    Alegri.SharePoint.FarmSolution1 Warning    6    CA1709 : Microsoft.Naming : Correct the casing of ‘MPP’ in namespace name ‘Alegri.SharePoint.FarmSolution1.eMPP’ by changing it to ‘Mpp’.    Alegri.SharePoint.FarmSolution1 Einfach eine XML Datei mit dem Namen CustomDictionary.xml dem Projekt hinzufügen. Danach die Buildaction für die Datei auf “CodeAnalysisDictionary” stellen und die Warnungen sind weg. Eine ausführliche Beschreibung findet ihr auf msdn. Continue reading Verwenden eines Wörterbuches für die Codeanalyse (Code Analysis Dictionary)

TFS 2010 Teambuild für SharePoint- und Silverlight Projekte

Ein Teambuild erhöht in hohem Maße die Qualität – ganz besonders, wenn Unterschiedliche Entwickler (z.B. Silverlight und SharePoint) zusammen an einem Projekt arbeiten. Besonders in Verbindung mit dem “Gated Check-In” wird sichergestellt, dass nur Änderungen eingecheckt werden, die sich auch in einer “neutralen” Umgebung bauen lassen. Leider gibt es bei der Konfiguration einige Stolperfallen. Buildservice pro Project Collection Um einen Teambuild einzurichten, muss der aktuellen Project Collection ein Buildserver zugewiesen werden. Es gibt zwar die Möglichkeit mehrere Instanzen der Buildservices auf einem Rechner einzurichten. Da dies aber nicht supported ist benötigt mal prinzipiell einen Buildserver pro Project Collection. Workspace Workspace … Continue reading TFS 2010 Teambuild für SharePoint- und Silverlight Projekte