示例#1
0
        private static void TestGetPerson()
        {
            var ptr    = InteropExample.get_person();
            var person = Marshal.PtrToStructure <Person>(ptr);

            Console.WriteLine($"{person.firstname} {person.lastname} is {person.age} years old");
        }
示例#2
0
        private static void TestOperateOn()
        {
            const int number = 10;
            var       result = InteropExample.operate_on(number, Square);

            Console.WriteLine($"{number} squared is {result}");
        }
示例#3
0
        private static void TestGetNumberFunc()
        {
            const int number = 10;
            var       cube   = InteropExample.get_number_func();

            Console.WriteLine($"{number} cubed is {cube(10)}");
        }
示例#4
0
        private static void TestGetLastName()
        {
            var person = new Person("Tony", "Ellis", 22);
            var ptr    = Marshal.AllocHGlobal(Marshal.SizeOf <Person>());

            Marshal.StructureToPtr(person, ptr, false);
            var name = InteropExample.get_last_name(ptr);

            Console.WriteLine($"{person.firstname}'s last name is {name}");
        }
示例#5
0
        private static void TestGetBytes()
        {
            const int number = 5;
            var       ptr    = InteropExample.get_bytes(number);
            var       buf    = new byte[sizeof(int)];

            Marshal.Copy(ptr, buf, 0, buf.Length);
            var hex = buf.Select(b => $"0x{b:X2}");

            Console.WriteLine($"{number} == [ {string.Join(", ", hex)} ]");
        }
示例#6
0
        private static void TestGetNumber()
        {
            const int number = 5;
            var       buf    = BitConverter.GetBytes(number);
            var       hex    = buf.Select(b => $"0x{b:X2}");
            var       ptr    = Marshal.AllocHGlobal(sizeof(int));

            Marshal.Copy(buf, 0, ptr, buf.Length);
            var result = InteropExample.get_number(ptr);

            Console.WriteLine($"[ {string.Join(", ", hex)}] == {result}");
        }