Exemple #1
0
        public static unsafe void Case2()
        {
            MyTestSS myss = new MyTestSS
            {
                ii = 0x1122,
                bb = 0x88,
                cc = 'a',
                ll = 0x7788,
            };

            GetStructAddr <MyTestSS> getAddr = CreateMethodGetStructAddr <MyTestSS>();
            IntPtr          addr             = getAddr(ref myss);
            Span <MyTestSS> spanSS           = new Span <MyTestSS>(addr.ToPointer(), 1);

            bool dataMatch = true;

            if (spanSS[0].ii != myss.ii)
            {
                dataMatch = false;
            }

            if (spanSS[0].bb != myss.bb)
            {
                dataMatch = false;
            }

            if (spanSS[0].cc != myss.cc)
            {
                dataMatch = false;
            }


            if (spanSS[0].ll != myss.ll)
            {
                dataMatch = false;
            }

            if (dataMatch)
            {
                Console.WriteLine("data match");
            }
            else
            {
                Console.WriteLine("data not match");
            }
        }
Exemple #2
0
        public static void Case0()
        {
            MyTestSS myss = new MyTestSS
            {
                ii = 0x1122,
                bb = 0x88,
                cc = 'a',
                ll = 0x7788,
            };

            FieldInfo[] fis = typeof(MyTestSS).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            foreach (var fi in fis)
            {
                var    getaddr = CreateMethod <MyTestSS>(fi);
                IntPtr addr    = getaddr(ref myss);
                Console.WriteLine($"{fi.Name} \t {addr}");
            }
        }