This project has moved. For the latest updates, please go here.

Tutorial06 - Verwenden des Datentyp Variant

Viele Office Anwendungen beinhalten den Datentyp Variant der seine Wurzeln in Visual Basic for Applications(VBA) hat. Dieser kann zur Laufzeit jeden beliebigen anderen Typ annehmen, jedoch wird er von den allermeisten .NET Sprachen nicht unterstützt. In NetOffice wird der Variant Datentyp durch den Typ Object ersetzt. Dies bedeutet jedoch nicht das Sie die COM Proxy Verwaltung verlieren. Sofern es sich bei Variants zur Laufzeit um einen COM Proxy handelt erhalten Sie von NetOffice eine Instanz der korrespondierenden Wrapper Klasse andernfalls den entsprechenden skalaren Datentyp z.B. bool oder int. Der Grund für die vielfache Verwendung von Variants in Office ist in den meisten Fällen die Zuweisung, insbesondere für VBA Entwickler, zu vereinfachen. Betrachten Sie dazu folgendes Codebeispiel in MS-Excel  und NetOffice:

Listing 1.0

Excel.Style style = worksheet.Styles.Add("myNewStyle"); 
style.Font.Bold = true; 
style.Font.Size = 14; 

Excel.Range range = workSheet.Range("A100:C300"); 
range.Style = style; 

Sie können erkennen das wir ein neues Style Objekt erstellen, 2 Properties setzen und diesen Style einer Range zuweisen. Das Style Property der Range Klasse ist einVariant also vom Typ Object. Excel erlaubt es uns daher auch folgende Zuweisung

range.Style = "myNewStyle";

Excel hat das erstellte Style Objekt in einer eigenen Auflistung gespeichert und kann bei einer Zuweisung entsprechend reagieren. Wenn Sie einen String zuweisen statt einem Style Objekt wird Excel in seiner internen Auflistung nach einem Style mit diesem Namen suchen den Style auf die Range anwenden. Wenn Sie das Style Property der Range abrufen werden Sie immer ein Excel.Style Objekt erhalten. Variants dienen vor allem der flexiblen Zuweisung von Eigenschaften. Leider schaffen sie für den Entwickler zur Entwicklungszeit manchmal einige Verwirrung da dieser die Information um welchen Typ es sich eigentlich handelt der Dokumentation entnehmen muss. In einigen Fällen werden Variants auch verwendet wenn sich der Typ eines Property je nach Kontext der Situation ändern kann. Ein gutes Beispiel dafür ist das Selection Property von Excel.Application. Betrachten Sie dazu folgendes Codebeispiel:

Listing 1.1

if (application.Selection is Excel.Worksheet) 
{ 
   Excel.Worksheet sheet = (Excel.Worksheet)application.Selection; 
} 
else if (application.selection is Excel.Range) 
{ 
   Excel.Range range = (Excel.Range)application.Selection; 
}
else if (!application.selection is COMObject)
{ 
   /* selection is no COM Object means a 
   native scalar type like bool or int */ 
}


Wichtig für Sie zu wissen ist das NetOffice sich nicht anders verhält als EarlyBind Lösungen wie die MS Interop Assemblies und Sie niemals befürchten das COM Proxies in der Verwaltung von NetOffice übersehen werden.

Last edited May 13, 2012 at 8:43 PM by SebastianDotNet, version 15

Comments

No comments yet.