Esempio n. 1
0
        static void Main(string[] args)
        {
            AssemblyDomain.Init();

            var hwFunc = FastMethodOperator
                         .RandomDomain()
                         .Param(typeof(string), "str1")
                         .Param <string>("str2")
                         .Body("return str1+str2;")
                         .Return <string>()
                         .Compile <Func <string, string, string> >();

            Console.WriteLine(hwFunc("Hello", " World!"));


            var a123   = NClass.UseDomain(typeof(Program).GetDomain());
            var domain = DomainManagement.Random;
            var type   = NDelegate.UseDomain(domain).GetType("public class A{ public A(){Name=\"1\"; }public string Name;}");
            var func   = NDelegate.UseDomain(domain).Func <string>("return (new A()).Name;");

            Console.WriteLine(type.FullName);
            Console.WriteLine(func());

            //type.RemoveReferences();
            type = NDelegate.UseDomain(domain).GetType("public class A{ public A(){Name=\"2\"; }public string Name;}");
            func = NDelegate.UseDomain(domain).Func <string>("return (new A()).Name;");
            Console.WriteLine(type.FullName);
            Console.WriteLine(func());

            domain = DomainManagement.Create("a");
            using (DomainManagement.Lock("a"))
            {
                Console.WriteLine(domain == (AssemblyDomain)AssemblyLoadContext.CurrentContextualReflectionContext);
            }
        }
Esempio n. 2
0
        public string GetResult1()
        {
            string result;
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Lib", "Sql", "ClassLibrary1.dll");

            Assert.True(File.Exists(path));
            using (DomainManagment.CreateAndLock("TempDADomain11"))
            {
                var domain    = DomainManagment.CurrentDomain;
                var assemebly = domain.LoadStream(path);
                var action    = FastMethodOperator.Default()
                                .Using(assemebly)
                                .MethodBody(@"
try{
Class1 a = new Class1();
return  a.Show();
}
catch(Exception e){
    Console.WriteLine(e.Message);  
    return e.Message;
}
return default;").Return <string>()

                                .Complie <Func <string> >();
                result = action();
                domain.Dispose();
            }
            return(result);
        }
Esempio n. 3
0
        public static void Show1()
        {
            string result;
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Lib", "Sql", "ClassLibrary1.dll");

            using (DomainManagement.CreateAndLock("TempDomain11"))
            {
                var domain    = DomainManagement.CurrentDomain;
                var assemebly = domain.LoadPluginFromStream(path);
                var action    = FastMethodOperator.DefaultDomain()
                                .Using(assemebly)
                                .Body(@"
try{
Class1 a = new Class1();
return  a.Show();
}
catch(Exception e){
    return e.Message;
}
return default;").Return <string>()

                                .Compile <Func <string> >();
                result = action();
                Console.WriteLine(result);
            }
        }
Esempio n. 4
0
 public static Delegate Creator(Type type)
 {
     return(FastMethodOperator
            .Use(type.GetDomain())
            .Body($"return new {type.GetDevelopName()}();")
            .Return(type)
            .Compile());
 }
Esempio n. 5
0
        public static void RunDelegate3()
        {
            var delegateAction = FastMethodOperator.Random()
                                 .Body(@"var temp = obj;")
                                 .Compile <Action <string> >();

            delegateAction?.Invoke("Hello");
            Assert.NotNull(delegateAction);
        }
Esempio n. 6
0
        public static void RunDelegate2()
        {
            var delegateAction = FastMethodOperator.Random()
                                 .Body(@"return arg1 +"" ""+ arg2;")
                                 .Compile <Func <string, string, string> >();

            string result = delegateAction?.Invoke("Hello", "World2!");

            Assert.Equal("Hello World2!", result);
        }
Esempio n. 7
0
        public Delegate TypeRouter(NBuildInfo info)
        {
            string methodBody;

            // 简单类型
            // SimpleType
            if (info.ArrayBaseType.IsSimpleType())
            {
                methodBody = GenerateSimpleTypeClone(info);
            }
            else if (info.ArrayBaseType == typeof(object))
            {
                // 多维+复杂
                // MultiD+Complex
                if (info.ArrayDimensions > 1)
                {
                    methodBody = GenerateMultiDWithObjectClone(info);
                }
                // 1维+复杂 及 锯齿+复杂
                // 1D+Complex and Jagged+Complex
                else
                {
                    methodBody = GenerateJaggedWithObjectClone2(info);
                }
            }
            else
            {
                // 多维+复杂
                // MultiD+Complex
                if (info.ArrayDimensions > 1)
                {
                    methodBody = GenerateMultiDWithComplexClone(info);
                }
                // 1维+复杂 及 锯齿+复杂
                // 1D+Complex and Jagged+Complex
                else
                {
                    methodBody = GenerateJaggedWithComplexClone2(info);
                }
            }


            var action = FastMethodOperator.Create(info.CurrentType.GetDomain())
                         .Using("DeepClone")
                         .Using(typeof(Array))
                         .Param(info.FatherType, "oldIns")
                         .MethodBody(methodBody)
                         .Return(info.FatherType)
                         .Complie();

            return(action);
        }
Esempio n. 8
0
        public static void RunInnerDelegate()
        {
            var delegateAction = FastMethodOperator
                                 .DefaultDomain()
                                 .Body(@"
                           OopTestModel.InnerClass a = new OopTestModel.InnerClass();
                            a.Name =""abc"";
                            return a;")
                                 .Return <OopTestModel.InnerClass>()
                                 .Compile();

            var result = ((Func <OopTestModel.InnerClass>)delegateAction)?.Invoke();

            Assert.Equal("abc", result.Name);
        }
Esempio n. 9
0
        public static async void RunAsyncDelegate1()
        {
            var delegateAction = FastMethodOperator.Default()

                                 .Async()
                                 .Body(@"
                            await Task.Delay(100);
                            string result = arg1 +"" ""+ arg2;
                            return result;")

                                 .Compile <Func <string, string, Task <string> > >();

            string result = await delegateAction?.Invoke("Hello", "World2!");

            Assert.Equal("Hello World2!", result);
        }
Esempio n. 10
0
        public static void RunDelegate1()
        {
            var delegateAction = FastMethodOperator
                                 .Random()
                                 .Param <string>("str1")
                                 .Param <string>("str2")
                                 .Body(@"
                            string result = str1 +"" ""+ str2;
                            return result;")
                                 .Return <string>()
                                 .Compile <Func <string, string, string> >();

            string result = delegateAction?.Invoke("Hello", "World2!");

            Assert.Equal("Hello World2!", result);
        }
Esempio n. 11
0
 private Func <TIn, TOut> GetFunc <TIn, TOut>(string argsName = "arguments")
 {
     return(FastMethodOperator.RandomDomain(o =>
     {
         o.ThrowAndLogCompilerError();
         o.ThrowAndLogSyntaxError();
         o.UseStreamCompile();
         foreach (var ns in _usingList)
         {
             o.Add($"using {ns};");
         }
     }).Param <TIn>(argsName)
            .Body(_body)
            .Return <TOut>()
            .Compile <Func <TIn, TOut> >());
 }
Esempio n. 12
0
        public void Test3()
        {
            var builder        = FastMethodOperator.Default();
            var delegateAction = builder
                                 .Param <string>("str1")
                                 .Param <string>("str2")
                                 .Body(@"
                            string result = str1 +"" ""+ str2;
                            Console.WriteLine(result)1;
                            return result;")
                                 .Return <string>()
                                 .Compile();

            Assert.Null(delegateAction);
            Assert.Equal(CompileError.Syntax, builder.Compiler.CompileException.ErrorFlag);
            Assert.Equal(CompileError.Syntax, builder.Compiler.SyntaxExceptions[0].ErrorFlag);
        }
Esempio n. 13
0
        public static void RunDelegate2()
        {
            var delegateAction = FastMethodOperator
                                 .DefaultDomain()
                                 .Param <string>("str1")
                                 .Param <string>("str2")
                                 .Body(@"
                            string result = str1 +"" ""+ str2;
                            Console.WriteLine(result);
                            return result;")
                                 .Return <string>()
                                 .Compile <Func <string, string, string> >();

            string result = delegateAction?.Invoke("Hello", "World2!");

            Assert.Equal("Hello World2!", result);
        }
Esempio n. 14
0
        public static void RunDelegate1()
        {
            var delegateAction = FastMethodOperator
                                 .Create()
                                 .Param <string>("str1")
                                 .Param <string>("str2")
                                 .MethodBody(@"
                            string result = str1 +"" ""+ str2;
                            Console.WriteLine(result);
                            return result;")
                                 .Return <string>()
                                 .Complie();

            string result = ((Func <string, string, string>)delegateAction)?.Invoke("Hello", "World1!");

            Assert.Equal("Hello World1!", result);
        }
Esempio n. 15
0
        public static async void RunAsyncDelegate4()
        {
            var delegateAction = FastMethodOperator.Create()

                                 .UseAsync()
                                 .MethodBody(@"
                            await Task.Delay(100);
                            string result = arg1 +"" ""+ arg2;
                            Console.WriteLine(result);
                            return result;")

                                 .Complie <Func <string, string, Task <string> > >();

            string result = await delegateAction?.Invoke("Hello", "World2!");

            Assert.Equal("Hello World2!", result);
        }
Esempio n. 16
0
        internal string ForTest1()
        {
            var domain   = DomainManagement.Create("SingleDomainAsmTest1");
            var assembly = domain.CreateAssembly("AsmTest1");

            var @interface = assembly
                             .CreateInterface("IAsmT1")
                             .Using("System")
                             .Public()
                             .Body("string ShowMethod(string str);");


            var @class = assembly
                         .CreateClass("ClassAsm")
                         .Using("System")
                         .Public()
                         .Inheritance("IAsmT1")
                         .Method(method => method
                                 .Public()
                                 .DefinedName("ShowMethod")
                                 .Param <string>("str")
                                 .Body("return str+AsmEnum.Test.ToString();")
                                 .Return <string>()
                                 );

            var @enum = assembly
                        .CreateEnum("AsmEnum")
                        .Public()
                        .EnumField("Test")
                        .EnumField("Test1")
                        .EnumField("Test2", 1);

            var result = assembly.GetAssembly();
            var type   = assembly.GetTypeFromFullName(@class.NamespaceScript + "." + "ClassAsm");

            var builder = FastMethodOperator.DefaultDomain();

            builder.AssemblyBuilder.Compiler.Domain = domain;
            var @delegate = builder.Using(type).Body(@"
            ClassAsm obj = new ClassAsm();
            return obj.ShowMethod(""Hello"");
            ").Compile <Func <string, string> >();

            DomainManagement.Get("SingleDomainAsmTest1").Dispose();
            return(@delegate("hello"));
        }
Esempio n. 17
0
        public Delegate TypeRouter(NBuildInfo info)
        {
            if (info.CurrentType.IsGenericType)
            {
                StringBuilder scriptBuilder = new StringBuilder();
                scriptBuilder.AppendLine(@"if(old!=default){ return ");

                // 初始化目标,区分实体类和接口
                if (!info.CurrentType.IsInterface)
                {
                    scriptBuilder.AppendLine($"new {info.CurrentTypeName}");
                }


                scriptBuilder.AppendLine("(old.Select(item=>");
                var parameters = info.CurrentType.GetGenericArguments();
                if (parameters[0].IsSimpleType())
                {
                    scriptBuilder.Append("item");
                }
                else if (parameters[0] == typeof(object))
                {
                    scriptBuilder.Append("ObjectCloneOperator.Clone(item)");
                }
                else
                {
                    scriptBuilder.Append("CloneOperator.Clone(item)");
                }
                scriptBuilder.Append("));");


                scriptBuilder.AppendLine(@"}return default;");
                var action = FastMethodOperator.UseDomain(info.CurrentType.GetDomain())
                             .Using("DeepClone")
                             .Using("System.Linq")
                             .Param(info.FatherType, "old")
                             .Body(scriptBuilder.ToString())
                             .Return(info.FatherType)
                             .Compile();
                return(action);
            }
            else
            {
                throw new Exception("暂不支持");
            }
        }
Esempio n. 18
0
        public static async void RunAsyncDelegate1()
        {
            var delegateAction = FastMethodOperator
                                 .Default()
                                 .UseAsync()
                                 .Param <string>("str1")
                                 .Param <string>("str2")
                                 .MethodBody(@"
                            string result = str1 +"" ""+ str2;
                            Console.WriteLine(result);
                            return result;")
                                 .Return <Task <string> >()
                                 .Complie();

            string result = await((Func <string, string, Task <string> >)delegateAction)?.Invoke("Hello", "World1!");

            Assert.Equal("Hello World1!", result);
        }
Esempio n. 19
0
        public void Test3()
        {
            var builder = FastMethodOperator.DefaultDomain();

            builder.AssemblyBuilder.Syntax.ErrorBehavior = ExceptionBehavior.None;
            var delegateAction = builder
                                 .Param <string>("str1")
                                 .Param <string>("str2")
                                 .Body(@"
                            string result = str1 +"" ""+ str2;
                            Console.WriteLine(result)1;
                            return result;")
                                 .Return <string>()
                                 .Compile();

            Assert.Null(delegateAction);
            Assert.Equal(ExceptionKind.Syntax, builder.Exception.ErrorFlag);
        }
Esempio n. 20
0
        public string GetResult2()
        {
            string result;
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Lib", "Static", "ClassLibrary5.dll");

            Assert.True(File.Exists(path));
            using (DomainManagement.CreateAndLock("TempDomain12"))
            {
                var domain    = DomainManagement.CurrentDomain;
                var assemebly = domain.LoadPlugin(path);
                var action    = FastMethodOperator.UseDomain(domain)
                                .Body(@"Test.Instance.Name=""11""; return Test.Instance.Name;")
                                .Compile <Func <string> >();
                result = action();
                domain.Dispose();
                domain.Unload();
            }
            return(result);
        }
Esempio n. 21
0
        public static async void RunAsyncDelegate2()
        {
            var delegateAction = FastMethodOperator.Default()

                                 .Async()
                                 .Param <string>("str1")
                                 .Param <string>("str2")
                                 .Body(@"
                            await Task.Delay(1000);
                            string result = str1 +"" ""+ str2;
                            return result;")
                                 .Return <Task <string> >()

                                 .Compile();

            string result = await((Func <string, string, Task <string> >)delegateAction)?.Invoke("Hello", "World1!");

            Assert.Equal("Hello World1!", result);
        }
Esempio n. 22
0
        public void TestHelloWorld()
        {
            using (DomainManagement.CreateAndLock("MyDomain"))
            {
                var domain   = DomainManagement.CurrentDomain;
                var assembly = domain.CreateAssembly("MyAssembly");


                //创建一个接口
                assembly
                .CreateInterface("InterfaceTest")
                .Using("System")
                .Public()
                .Body("string ShowMethod(string str);");


                //创建一个类并实现​接口
                var nameSpace = assembly
                                .CreateClass("TestClass​")
                                .Using("System")
                                .Public()
                                .Inheritance("InterfaceTest")
                                .Method(method => method
                                        .Public()
                                        .DefinedName("ShowMethod")
                                        .Param <string>("str")
                                        .Body("return str+\" World!\";")
                                        .Return <string>()).NamespaceScript;

                var result = assembly.GetAssembly();
                var type   = assembly.GetTypeFromShortName("TestClass");

                //单独创建一个程序集​方法
                var func = FastMethodOperator.UseDomain(domain)
                           .Using(type)
                           .Body(@"
TestClass obj = new TestClass​();
return obj.ShowMethod(arg);")
                           .Compile <Func <string, string> >();
                Assert.Equal("Hello World!", func("Hello"));
            }
        }
Esempio n. 23
0
        public string GetResult3()
        {
            string result;
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Lib", "Json", "ClassLibrary6.dll");

            Assert.True(File.Exists(path));
            using (DomainManagment.CreateAndLock("TempDomain13"))
            {
                var domain    = DomainManagment.CurrentDomain;
                var assemebly = domain.LoadStream(path);
                var action    = FastMethodOperator.Default()
                                .Using(assemebly)
                                .MethodBody(@"Class1 obj = new Class1(); return obj.Get();")
                                .Complie <Func <string> >();
                result = action();
                domain.Dispose();
                domain.Unload();
            }
            return(result);
        }
Esempio n. 24
0
        public Delegate TypeRouter(NBuildInfo info)
        {
            var instanceName = "oldSource";

            info.FatherType = info.FatherType == typeof(object) ? info.CurrentType : info.FatherType;
            if (info.CurrentType != info.FatherType)
            {
                instanceName = "old";
            }
            CtorHandler = new CtorTempalte(info.CurrentType, instanceName);


            StringBuilder scriptBuilder = new StringBuilder();
            var           memberBuilder = new StringBuilder();
            var           builder       = FastMethodOperator.UseDomain(info.CurrentType.GetDomain());

            //构造函数处理: 不存在public无参构造函数无法克隆;
            if (info.CurrentType.GetConstructor(new Type[0]) == null)
            {
                return(default);
Esempio n. 25
0
        public string GetResult3()
        {
            string result;
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Lib", "Json", "ClassLibrary6.dll");

            Assert.True(File.Exists(path));
            using (DomainManagement.CreateAndLock("TempDomain13"))
            {
                var domain    = DomainManagement.CurrentDomain;
                var assemebly = domain.LoadPluginFromStream(path);
                var action    = FastMethodOperator.UseDomain(domain,
                                                             item => item.Compiler.ErrorBehavior = Natasha.Error.Model.ExceptionBehavior.Log
                                                             )
                                .Using(assemebly)
                                .Body(@"Class1 obj = new Class1(); return obj.Get();")
                                .Compile <Func <string> >();
                result = action();
                domain.Dispose();
                domain.Unload();
            }
            return(result);
        }
Esempio n. 26
0
        public static void Test()
        {
            for (int i = 0; i < count; i++)
            {
                var ad      = DomainManagement.Create("test" + i.ToString());
                var builder = FastMethodOperator.Default();
                builder.AssemblyBuilder.Compiler.Domain = ad;
                func[i] = builder.Body($@"
int[] a = new int[40960];
for(int i =0;i<40960;i++){{a[i]=i;}}
string temp = @""111111111111111111111111111111111111111111111111111111111111111111111111
2222222222222222222222222222222222223333333333333333333333333333
2222222222222222222222222
44444444444444444444444444444444444444444444444444444444444444444444
555555555555555555555555555555555555555555555555555555555555
6666666666666666666666666666666666666666666666666666666666
77777777777777777777777777777777777777777777722221111111111111111111111111111111"";
Console.WriteLine(""HelloWorld111111111111111111111111111111111111111!"");
return a;
").Compile <Func <int[]> >();
                func[i]();
            }
        }
Esempio n. 27
0
 public SimpleBuilder()
 {
     _script   = new StringBuilder();
     _destType = typeof(TDest);
     _handler  = FastMethodOperator.New;
 }
Esempio n. 28
0
        public Delegate TypeRouter(NBuildInfo info)
        {
            StringBuilder scriptBuilder = new StringBuilder();

            scriptBuilder.AppendLine(@"if(old!=default){ return ");


            //初始化目标,区分实体类和接口
            if (!info.CurrentType.IsInterface)
            {
                scriptBuilder.AppendLine($"new {info.CurrentTypeName}");
            }
            scriptBuilder.AppendLine("(old.Select(item=>KeyValuePair.Create(");



            //克隆Key
            var keyType = info.CurrentType.GetGenericArguments()[0];

            if (keyType.IsSimpleType())
            {
                scriptBuilder.Append($"item.Key,");
            }
            else if (keyType == typeof(object))
            {
                scriptBuilder.AppendLine($"ObjectCloneOperator.Clone(item.Key),");
            }
            else
            {
                scriptBuilder.AppendLine($"CloneOperator.Clone(item.Key),");
            }


            //克隆Value
            var valueType = info.CurrentType.GetGenericArguments()[1];

            if (valueType.IsSimpleType())
            {
                scriptBuilder.Append($"item.Value");
            }
            else if (keyType == typeof(object))
            {
                scriptBuilder.AppendLine($"ObjectCloneOperator.Clone(item.Value),");
            }
            else
            {
                scriptBuilder.AppendLine($"CloneOperator.Clone(item.Value)");
            }


            //补全括号,返回默认值。
            scriptBuilder.AppendLine(")));}return default;");

            var action = FastMethodOperator.Create(info.CurrentType.GetDomain())
                         .Using("DeepClone")
                         .Using("System.Linq")
                         .Using(typeof(IDictionary))
                         .Using(typeof(KeyValuePair <,>))
                         .Param(info.FatherType, "old")
                         .MethodBody(scriptBuilder.ToString())
                         .Return(info.FatherType)
                         .Complie();

            return(action);
        }
Esempio n. 29
0
        public void Test2()
        {
            var domain   = DomainManagement.Create("SingleDomainAsmTest2");
            var assembly = domain.CreateAssembly("AsmTest1");

            var @interface = assembly
                             .CreateInterface("IAsmT1")
                             .Using("System")
                             .Public()
                             .Body("string ShowMethod(string str);");


            var @class = assembly
                         .CreateClass("ClassAsm")
                         .Using("System")
                         .Public()
                         .Inheritance("IAsmT1")
                         .Method(method => method
                                 .Public()
                                 .DefinedName("ShowMethod")
                                 .Param <string>("str")
                                 .Body("return str+AsmEnum.Test.ToString();")
                                 .Return <string>()
                                 );


            var @enum = assembly
                        .CreateEnum("AsmEnum")
                        .Public()
                        .EnumField("Test")
                        .EnumField("Test1")
                        .EnumField("Test2", 1);


            var result = assembly.GetAssembly();
            var type   = assembly.GetTypeFromFullName(@class.NamespaceScript + "." + "ClassAsm");

            domain.Remove(type.Assembly);


            assembly   = domain.CreateAssembly("AsmTest2");
            @interface = assembly
                         .CreateInterface("IAsmT1")
                         .Using("System")
                         .Public()
                         .Body("string ShowMethod(string str);");


            @class = assembly
                     .CreateClass("ClassAsm")
                     .Using("System")
                     .Public()
                     .Inheritance("IAsmT1")
                     .Method(method => method
                             .Public()
                             .DefinedName("ShowMethod")
                             .Param <string>("str")
                             .Body("return str+AsmEnum.Test.ToString()+\"1\";")
                             .Return <string>()
                             );


            @enum = assembly
                    .CreateEnum("AsmEnum")
                    .Public()
                    .EnumField("Test")
                    .EnumField("Test1")
                    .EnumField("Test2", 1);


            result = assembly.GetAssembly();
            type   = assembly.GetTypeFromFullName(@class.NamespaceScript + ".ClassAsm");



            var builder = FastMethodOperator.DefaultDomain();

            builder.AssemblyBuilder.Compiler.Domain = domain;
            var @delegate = builder.Using(type).Body(@"
ClassAsm obj = new ClassAsm();
return obj.ShowMethod(""Hello"");
").Compile <Func <string, string> >();

            Assert.Equal("HelloTest1", @delegate("hello"));
#if !NETCOREAPP2_2
            @delegate.DisposeDomain();
            for (int i = 0; i < 10; i++)
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }

            Assert.True(DomainManagement.IsDeleted("SingleDomainAsmTest1"));
#endif
        }
Esempio n. 30
0
        public static void Show()
        {
            //默认共享域
            NStruct nStruct = new NStruct();
            //nStruct
            //    .Namespace("Core30")
            //    .OopName("Test")
            //    .Ctor(builder => builder
            //        .PublicMember
            //        .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
            //         .PublicMember
            //         .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
            //         .PublicMember
            //         .Param<string>("name")
            //         .Body(@"Name=name+""2"";"))
            //     .PublicField<string>("Name");
            // var type3 = nStruct.GetType();
            // domain1.RemoveType(type3);


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

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


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



            var temp = FastMethodOperator.Default();

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