Esempio n. 1
0
        public void CanAddCustomCode()
        {
            var customCode = @"public void RunThings()
                       {
                           var y = 0;
                           var a = 1;
           
                           a = y + 10;
                       }";

            var options = new TypeToTypeWrapperOptions()
            {
                CustomCodeGenerator = (wrapperOptions, type) => customCode
            };

            var wrapper = new TypeToTypeWrapper();
            var result  = wrapper.CreateType(typeof(TestClass), options);

            dynamic instance = Activator.CreateInstance(result);

            instance.RunThings();
        }
Esempio n. 2
0
        public void CanWrapGeneratedType()
        {
            var code = @"namespace MyTest {
                   public class MyClass
                   {
                       public void RunThings()
                       {
                           var y = 0;
                           var a = 1;
           
                           a = y + 10;
                       }
                   }}";

            var generator = new CodeToAssemblyGenerator();
            var assembly  = generator.GenerateAssembly(code);

            var type = assembly.GetExportedTypes().Single();

            var wrapper = new TypeToTypeWrapper();

            var result = wrapper.CreateType(type,
                                            new TypeToTypeWrapperOptions()
            {
                IncludedProperties = new List <string>()
                {
                    "*"
                }, TypeName          = "WrappedType",
                AdditionalNamespaces = new List <string>()
                {
                    type.Namespace
                },
                AssemblyGenerator = generator
            });

            dynamic inst = Activator.CreateInstance(result);

            inst.RunThings();
        }
Esempio n. 3
0
        public void CanRunCodeAfterMethodExecution()
        {
            var options = new TypeToTypeWrapperOptions()
            {
                OnBeforeMethod = (wrapperOptions, type, inst, mi) =>
                {
                    ((TestClass)inst).AddCount(8);
                }
            };

            var wrapper = new TypeToTypeWrapper();
            var result  = wrapper.CreateType(typeof(TestClass), options);

            dynamic instance = Activator.CreateInstance(result);

            instance.Run();
            instance.Run();

            var instanceCount = instance.GetCount();

            Assert.Equal(24, instanceCount);
        }
Esempio n. 4
0
        public void ByDefaultEachInstanceIsTransient()
        {
            var wrapper = new TypeToTypeWrapper();
            var result  = wrapper.CreateType(typeof(TestClass));

            dynamic instance  = Activator.CreateInstance(result);
            dynamic instance2 = Activator.CreateInstance(result);

            instance.AddCount();
            instance.AddCount();

            instance2.AddCount();
            instance2.AddCount();
            instance2.AddCount();

            var instanceCount = instance.GetCount();

            Assert.Equal(2, instanceCount);

            var instance2Count = instance2.GetCount();

            Assert.Equal(3, instance2Count);
        }