Beispiel #1
0
        public void CompileCodeTest()
        {
            var compilation = CSharpCompilation.Create("DynamicAssembly", new[] { CSharpSyntaxTree.ParseText(@"
    using System;

    public class Person
    {
        public virtual int Id { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual DateTime Dob { get; set; }
    }") },
                                                       new[]
            {
                MetadataReference.CreateFromFile(typeof(object).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(typeof(Console).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(SystemRuntime.Location),
            },
                                                       new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            using (var engine = new DynamicCodeEngine(compilation))
            {
                var type   = engine.GetType("Person");
                var person = engine.CreateInstance("Person");
                Assert.NotNull(person);
            }
        }
Beispiel #2
0
        public void CompileRuleCodeTest()
        {
            var compilation = CSharpCompilation.Create("DynamicAssembly", new[] { CSharpSyntaxTree.ParseText(@"
    using System;
    using Platz.SqlForms;

    public class Person
    {
        public virtual int Id { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual DateTime Dob { get; set; }
    }

    public class Rule
    {
        public FormRuleResult CheckCompanyRequired(RuleArgs<Person> a)
        {
            var required = (a.Model.LastName == ""Ford"");
            a.Entity.Property(p => p.FirstName).IsRequired(required).Label(required ? ""Ford Division"": ""Company Name"");
            return null;
        }
    }") },
                                                       new[]
            {
                MetadataReference.CreateFromFile(typeof(object).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(typeof(Console).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(SystemRuntime.Location),
                MetadataReference.CreateFromFile(typeof(System.Linq.Expressions.Expression <>).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(typeof(Platz.SqlForms.RuleArgs).GetTypeInfo().Assembly.Location),
            },
                                                       new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            using (var engine = new DynamicCodeEngine(compilation))
            {
                var rule = engine.CreateInstance("Rule");
                Assert.NotNull(rule);
            }
        }