Microsoft .NET Framework

Load a 64-bit C# library (a .NET Framework) in 64-bit Python (view the C# source code). Include the 'net' argument to indicate that the .dll file is for the .NET Framework. To load the 32-bit version in 32-bit Python use '/dotnet_lib32.dll'.

Tip

'clr' is an alias for 'net' and can also be used as the libtype

>>> from msl.loadlib import LoadLibrary
>>> from msl.examples.loadlib import EXAMPLES_DIR
>>> net = LoadLibrary(EXAMPLES_DIR + '/dotnet_lib64.dll', 'net')

The dotnet_lib64 library contains a reference to the DotNetMSL module (which is a C# namespace), the StaticClass class, the StringManipulation class and the System namespace

Create an instance of the BasicMath class in the DotNetMSL namespace and call the multiply_doubles method

>>> bm = net.lib.DotNetMSL.BasicMath()
>>> bm.multiply_doubles(2.3, 5.6)
12.879999...

Create an instance of the ArrayManipulation class in the DotNetMSL namespace and call the scalar_multiply method

>>> am = net.lib.DotNetMSL.ArrayManipulation()
>>> values = am.scalar_multiply(2., [1., 2., 3., 4., 5.])
>>> values
<System.Double[] object at ...>
>>> [val for val in values]
[2.0, 4.0, 6.0, 8.0, 10.0]

Use the reverse_string method in the StringManipulation class to reverse a string

>>> net.lib.StringManipulation().reverse_string('abcdefghijklmnopqrstuvwxyz')
'zyxwvutsrqponmlkjihgfedcba'

Use the static add_multiple method in the StaticClass class to add five integers

>>> net.lib.StaticClass.add_multiple(1, 2, 3, 4, 5)
15

One can create objects from the System namespace,

  >>> System = net.lib.System

for example, to create a 32-bit signed integer,
>>> System.Int32(9)
<System.Int32 object at ...>

or, a one-dimensional Array of the specified Type

>>> array = System.Array[int](list(range(10)))
>>> array
<System.Int32[] object at ...>
>>> list(array)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> array[0] = -1
>>> list(array)
[-1, 1, 2, 3, 4, 5, 6, 7, 8, 9]