Tipps und Tricks rund um .NET und Visual Studio

Framework Class Library Zugriff auf COM-Bibliotheken ohne NoPIA
Kommentare

Im heutigen Teil von „.NETversum“ zeigen Holger Schwichtenberg und Manfred Steyer wie man bei der Framework Class Library Zugriff auf COM-Bibliotheken ohne Primary Interop Assemblies erlangen kann.

Zugriff auf COM-Bibliotheken ohne Primary Interop Assemblies (NoPIA)

Um den Zugriff auf COM-Bibliotheken möglich zu machen, musste in früheren Versionen eine Primary Interop Assembly (PIA) für sie erzeugt werden. Diese Aufgabe wurde zwar von Visual Studio beim Hinzufügen einer Referenz auf die gewünschte Bibliothek automatisch durchgeführt, trotzdem mussten diese zum Teil großen Assemblies ausgeliefert werden. Obwohl diese Vorgehensweise nach wie vor möglich ist, kann ab .NET 4.0 auch auf den Einsatz von PIAs verzichtet werden. Stattdessen übernimmt Visual Studio 2010 standardmäßig die benötigen Informationen über die referenzierte COM-Bibliothek direkt in die aktuelle Assembly, wobei dabei eine Beschränkung auf jene Aspekte, die von dieser auch wirklich verwendet werden, stattfindet. Um das zu verhindern und somit die Erstellung von PIAs zu veranlassen, ist die Eigenschaft Embed Interop Types bei den hinzugefügten COM-Bibliotheken auf false zu setzen.

BigInteger

Für jene Fälle, in denen mit ganzzahligen Werten beliebiger Größe gerechnet werden soll, bietet .NET 4.0 eine neue Struktur namens BigInteger (System.Numeric.BigInteger) an. Damit Instanzen von BigInteger ähnlich wie „herkömmliche“ Integer-Werte behandelt werden können, wurden sämtliche arithmetischen Operatoren sowie Bit-, Vergleichs- und Zuweisungsoperatoren überladen. Ein Beispiel für die Verwendung dieses neuen Typs ist im Listing zu sehen. Dabei fällt auf, dass einem BigInteger primitive Integer-Werte direkt zugewiesen werden können, ohne dafür eine eigene Instanz von BigInteger erzeugen zu müssen. Einige Methoden, die für primitive Datentypen in der Klasse Math untergebracht wurden, finden sich als statische Methoden direkt in der Klasse BigInteger wieder. Als Beispiele solcher Methoden seien an dieser Stelle Pow (Potenz), Abs (Absolutwert) sowie Log (Logarithmus) genannt.

BigInteger bigInt1;
BigInteger bigInt2;

bigInt1 = long.MaxValue;
bigInt1 = bigInt1 * bigInt1;

bigInt2 = bigInt1;
bigInt2 = bigInt2 + 1;

Console.WriteLine(bigInt2);  

Dr. Holger Schwichtenberg (MVP) und FH-Prof. Manfred Steyer arbeiten bei www.IT-Visions.de als Softwarearchitekten, Berater und Trainer für .NET-Technologien. Dabei unterstützen Sie zahlreiche Unternehmen beim Einsatz von .NET und entwickeln selbst in größeren Projekten. Sie haben zahlreiche Fachbücher geschrieben und gehören seit vielen Jahren zu den Hauptsprechern auf der BASTA. Manfred Steyer ist zudem verantwortlich für den Fachbereich „Software Engineering“ der Studienrichtung „IT und Wirtschaftsinformatik“ an der FH CAMPUS 02 in Graz. Dr. Holger Schwichtenberg unterrichtet in Lehraufträgen an den Fachhochschulen Münster und Graz.

Nächste Woche bei .NETversum geht es übrigens um Windows Communication Foundation und die Programmatische Impersonation.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -