Exemple #1
0
        public void TestStruct1()
        {
            NStruct builder = NStruct.RandomDomain();
            var     script  = builder
                              .CustomUsing()
                              .HiddenNamespace()
                              .Attribute("[StructLayout(LayoutKind.Explicit)]")
                              .Access(Natasha.Reverser.Model.AccessTypes.Public)
                              .Name("EnumUT1")
                              .Field(item => { item.Attribute <FieldOffsetAttribute>("0").Public().Name("Apple").Type <int>(); })
                              .Field(item => { item.Attribute <FieldOffsetAttribute>("0").Public().Name("Orange").Type <int>(); })
                              .Script;

            Assert.Equal($"using System.Runtime.InteropServices;{Environment.NewLine}using System;{Environment.NewLine}[StructLayout(LayoutKind.Explicit)]{Environment.NewLine}public struct EnumUT1{{{Environment.NewLine}[System.Runtime.InteropServices.FieldOffsetAttribute(0)]{Environment.NewLine}public System.Int32 Apple;{Environment.NewLine}[System.Runtime.InteropServices.FieldOffsetAttribute(0)]{Environment.NewLine}public System.Int32 Orange;{Environment.NewLine}}}", script);
            Assert.NotNull(builder.GetType());
        }
Exemple #2
0
        public void TestStruct()
        {
            NStruct builder = NStruct.RandomDomain();
            var     script  = builder
                              .CustomUsing()
                              .HiddenNamespace()
                              .Access(Natasha.Reverser.Model.AccessTypes.Public)
                              .Name("EnumUT1")
                              .Field(item => { item.Public().Name("Apple").Type <int>(); })
                              .Field(item => { item.Public().Name("Orange").Type <string>(); })
                              .Property(item => { item.Public().Name("Banana").Type <NClass>(); })
                              .Script;

            Assert.Equal($"using System;{Environment.NewLine}using Natasha.CSharp;{Environment.NewLine}public struct EnumUT1{{{Environment.NewLine}public System.Int32 Apple;{Environment.NewLine}public System.String Orange;{Environment.NewLine}public Natasha.CSharp.NClass Banana{{{Environment.NewLine}get;{Environment.NewLine}set;{Environment.NewLine}}}{Environment.NewLine}}}", script);
            Assert.NotNull(builder.GetType());
        }
Exemple #3
0
        public static void Show()
        {
            //默认共享域
            NStruct nStruct = new NStruct();
            //nStruct
            //    .Namespace("Core30")
            //    .OopName("Test")
            //    .Ctor(builder => builder
            //        .MemberAccess(AccessTypes.Public)
            //        .Param<string>("name")
            //        .Body("Name=name;"))
            //    .PublicField<string>("Name");
            //var type = nStruct.GetType();



            var domain1 = DomainManagment.Create("TempDomain");

            // nStruct = new NStruct();
            // nStruct

            //     .Namespace("Core30")
            //     .OopName("Test1")
            //     .Ctor(builder => builder
            //         .MemberAccess(AccessTypes.Public)
            //         .Param<string>("name")
            //         .Body(@"Name=name+""1"";"))
            //     .PublicField<string>("Name");
            //var type1 = nStruct.GetType();
            // domain1.RemoveType(type1);

            // nStruct = new NStruct();
            // nStruct

            //     .Namespace("Core30")
            //     .OopName("Test")
            //     .Ctor(builder => builder
            //         .MemberAccess(AccessTypes.Public)
            //         .Param<string>("name")
            //         .Body(@"Name=name+""2"";"))
            //     .PublicField<string>("Name");
            // var type3 = nStruct.GetType();
            // domain1.RemoveType(type3);


            nStruct = new NStruct();
            nStruct.Complier.Domain = domain1;
            nStruct

            .Namespace("Core30")
            .OopName("Test")
            .Ctor(builder => builder
                  .MemberAccess(AccessTypes.Public)
                  .Param <string>("name")
                  .Body(@"Name=name+""3"";"))
            .PublicField <string>("Name");
            var type4 = nStruct.GetType();


            //nStruct = new NStruct();
            //nStruct
            //    .InDomain(domain1)
            //    .Namespace("Core30")
            //    .OopName("Test")
            //    .Ctor(builder => builder
            //        .MemberAccess(AccessTypes.Public)
            //        .Param<string>("name")
            //        .Body(@"Name=name+""1"";"))
            //    .PublicField<string>("Name");
            //var type2 = nStruct.GetType();



            var temp = FastMethodOperator.New;

            temp.Complier.Domain = domain1;
            temp
            //.Using<Test>()
            //.Using(type)
            .Using(type4)
            //.MethodAttribute<MethodImplAttribute>("MethodImplOptions.NoInlining")
            .MethodBody(@"
Test obj = new Test(""Hello World!"");
Console.WriteLine(obj.Name);"
                        );
            action = temp.Complie <Action>();
            action();
            DomainManagment.Get("TempDomain").Dispose();
        }