예제 #1
0
        public void RunDynamic()
        {
            var code         = @"
    using System;
namespace MyModel
{
    public class Xxx
    {
        public string Yyy { get; set; }
    }
}
";
            var assemblyName = "t_123_v_1.1";

            var wellKnownTypeContainer = new WellKnownTypeContainer();
            var typeContainer          = new TypeContainer(wellKnownTypeContainer);
            var assembly = DynamicModelLoader.Load(assemblyName, code);

            foreach (var type in assembly.GetTypes())
            {
                typeContainer.Add(type);
            }

            var customActivityParser = new CustomActivityParser(new WellKnownDescriptorContainer(), typeContainer);
            var definition           = LoadDefinition("dynamic");
            var activity             = customActivityParser.Parse(JsonSerializer.Deserialize <JsonElement>(definition));
            var compiler             = new ActivityCompiler(typeContainer);

            compiler.Compile("nnn", "mmmm", activity);
            var executor = new ActivityExecutor(null);

            executor.Run(activity);
        }
        public void LoadCode()
        {
            var code         = @"
    using System;
namespace MyModel
{
    public class Xxx
    {
        public string Yyy { get; set; }
    }
}
";
            var assemblyName = "t_123_v_1.1";
            var assembly     = DynamicModelLoader.Load(assemblyName, code);
            var type         = Type.GetType($"MyModel.Xxx,{assemblyName}");

            Assert.NotNull(type);
        }
예제 #3
0
        public void RunMirrorUpdate()
        {
            var code         = @"
    using System;
namespace MyModels
{
    public class student
    {
        public string id {get;set;}
        public student_data data { get; set; }
    }

    public class student_data
    {
        public string name {get;set;}
        public int age {get;set;}
    }
}
";
            var assemblyName = "t_123_v_1.1";

            var wellKnownTypeContainer = new WellKnownTypeContainer();
            var typeContainer          = new TypeContainer(wellKnownTypeContainer);
            var assembly = DynamicModelLoader.Load(assemblyName, code);

            foreach (var type in assembly.GetTypes())
            {
                typeContainer.Add(type);
            }
            var descriptorContainer = new DescriptorContainer(new WellKnownDescriptorContainer());

            descriptorContainer.Add(new MirrorUpdateDescriptor());
            var customActivityParser = new CustomActivityParser(descriptorContainer, typeContainer);
            var definition           = LoadDefinition("mirrorUpdate");
            var activity             = customActivityParser.Parse(JsonSerializer.Deserialize <JsonElement>(definition));
            var compiler             = new ActivityCompiler(typeContainer);

            compiler.Compile("nnn", "mmmm", activity);
            var executor = new ActivityExecutor(null);

            executor.Run(activity);
        }