diff --git a/test/netstd/Server/TestServer.cs b/test/netstd/Server/TestServer.cs
index 493d89d..68461dc 100644
--- a/test/netstd/Server/TestServer.cs
+++ b/test/netstd/Server/TestServer.cs
@@ -254,20 +254,20 @@
 
             public Task<Xtruct> testStructAsync(Xtruct thing, CancellationToken cancellationToken)
             {
-                logger.Invoke("testStruct({{\"{0}\", {1}, {2}, {3}}})", thing.StringThing, thing.ByteThing, thing.I32Thing, thing.I64Thing);
+                logger.Invoke("testStruct({{\"{0}\", {1}, {2}, {3}}})", thing.String_thing, thing.Byte_thing, thing.I32_thing, thing.I64_thing);
                 return Task.FromResult(thing);
             }
 
             public Task<Xtruct2> testNestAsync(Xtruct2 nest, CancellationToken cancellationToken)
             {
-                var thing = nest.StructThing;
+                var thing = nest.Struct_thing;
                 logger.Invoke("testNest({{{0}, {{\"{1}\", {2}, {3}, {4}, {5}}}}})",
-                    nest.ByteThing,
-                    thing.StringThing,
-                    thing.ByteThing,
-                    thing.I32Thing,
-                    thing.I64Thing,
-                    nest.I32Thing);
+                    nest.Byte_thing,
+                    thing.String_thing,
+                    thing.Byte_thing,
+                    thing.I32_thing,
+                    thing.I64_thing,
+                    nest.I32_thing);
                 return Task.FromResult(nest);
             }
 
@@ -429,10 +429,10 @@
                 logger.Invoke("testMulti()");
 
                 var hello = new Xtruct(); ;
-                hello.StringThing = "Hello2";
-                hello.ByteThing = arg0;
-                hello.I32Thing = arg1;
-                hello.I64Thing = arg2;
+                hello.String_thing = "Hello2";
+                hello.Byte_thing = arg0;
+                hello.I32_thing = arg1;
+                hello.I64_thing = arg2;
                 return Task.FromResult(hello);
             }
 
@@ -473,12 +473,12 @@
                     var x = new Xception2
                     {
                         ErrorCode = 2002,
-                        StructThing = new Xtruct { StringThing = "This is an Xception2" }
+                        Struct_thing = new Xtruct { String_thing = "This is an Xception2" }
                     };
                     throw x;
                 }
 
-                var result = new Xtruct { StringThing = arg1 };
+                var result = new Xtruct { String_thing = arg1 };
                 return Task.FromResult(result);
             }
 
