public void all_objects_in_the_object_graph_are_proxied()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new Mock <IRepositoryFactory>();
            var stateTracker         = new EntityStateCache();
            var proxyFactory         = new DynamicProxyFactory(metadataFactory, new NullLogger());

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory))
            {
                var factory = new DynamicProxyFactory(metadataFactory, new NullLogger());
                var item    = new Person
                {
                    Id       = "1",
                    Contacts = new List <Contact>
                    {
                        new Contact {
                            Id = "1"
                        }
                    }
                };
                var proxy = factory.Create(item, session);
                Assert.True(ProxyUtils.IsProxy(proxy));
                Assert.True(proxy.Contacts is ITrackableCollection <Contact>);
                Assert.True(ProxyUtils.IsProxy(proxy.Contacts[0]));
            }
        }
        public void nullable_types_are_ignored()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var proxyFactory         = new DynamicProxyFactory(metadataFactory, new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new RepositoryFactory(proxyFactory);
            var parentMapper         = new Mock <IMapper <Parent> >();

            repositoryFactory.Register <Parent>(x => parentMapper.Object);
            var childMapper = new Mock <IMapper <Child> >();

            repositoryFactory.Register <Child>(x => childMapper.Object);

            var stateTracker = new EntityStateCache();

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory, stateTracker, proxyFactory))
            {
                var entity = new EntityWithNullableType
                {
                    Id   = "1",
                    Date = DateTime.Now
                };
                var proxy = proxyFactory.Create(entity, session);
                Assert.NotNull(proxy.Date);
            }
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            var type = DynamicProxyFactory.Create(typeof(ITestClass), typeof(TestClass));
            var obj  = (ITestClass)Activator.CreateInstance(type, "A", "B");

            obj.Test("A", "B", 3);
        }
        public void change_tracking_is_applied_when_entity_set_in_constructor()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();

            var mapper            = new Mock <IMapper <Parent> >();
            var repositoryFactory = new Mock <IRepositoryFactory>();

            repositoryFactory.Setup(x => x.Create(It.IsAny <IGraphSession>(), It.IsAny <Type>())).Returns <IGraphSession, Type>((s, t) => new GenericAbstractRepository <Parent>(mapper.Object, s, new DynamicProxyFactory(metadataFactory, new NullLogger())));
            var stateTracker = new EntityStateCache();
            var proxyFactory = new DynamicProxyFactory(metadataFactory, new NullLogger());

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory))
            {
                var proxy = session.Create(new Parent
                {
                    Id    = "1",
                    Child = new Child {
                        Id = "2"
                    }
                });
                var state = stateTracker.Get(proxy.Child);
                Assert.Equal(EntityStatus.New, state.Status);
            }
        }
Esempio n. 5
0
 public AopTests()
 {
     ConfigurationManager.Instance.UseAutofac();
     IocContainer.Instance.OnServiceTypeRegistering += (sender, e) =>
     {
         if (e.ServiceType == typeof(IUser))
         {
             e.SetNewImplementationType(DynamicProxyFactory.CreateProxyType(e.ServiceType
                                                                            , e.ImplementationType
                                                                            , new Type[] {
                 typeof(UnitOfWorkInterceptor)
                 , typeof(PerformanceCounterInterceptor)
             }).ProxyType);
         }
     };
     IocContainer.Instance.OnServiceInstanceRegistering += (sender, e) =>
     {
         if (e.ServiceType == typeof(IUser))
         {
             e.SetNewInstance(DynamicProxyFactory.CreateProxy(e.ServiceType
                                                              , e.Instance
                                                              , new Type[] {
                 typeof(UnitOfWorkInterceptor)
                 , typeof(PerformanceCounterInterceptor)
             }));
         }
     };
     IocContainer.RegisterByAssembly(typeof(AopTests).GetTypeInfo().Assembly);
 }
Esempio n. 6
0
        public Dictionary <MethodInfo, ParameterInfo[]> GetMethods(string endpoint)
        {
            var factory      = new DynamicProxyFactory(endpoint);
            var serviceModel = new ServiceModel {
                ParamsList = new Dictionary <MethodInfo, ParameterInfo[]>()
            };

            var contract = factory.Contracts.FirstOrDefault();

            if (contract == null)
            {
                throw new DynamicProxyException(ErrorResource.NoContractFound);
            }

            var proxy = factory.CreateProxy(contract.Name);

            var type = proxy.ProxyType;

            var methods = proxy.ProxyType.GetMethods();

            foreach (var methodInfo in methods.Where(methodInfo => methodInfo.DeclaringType == type))
            {
                serviceModel.MethodName = methodInfo.Name;

                var paramList = methodInfo.GetParameters();

                serviceModel.ParamsList.Add(methodInfo, paramList);
            }

            return(serviceModel.ParamsList);
        }
Esempio n. 7
0
 private void cmdGetWSDL_Click(object sender, EventArgs e)
 {
     if (txtServiceURL.Text.Trim().Length > 0)
     {
         try
         {
             cboEndPoint.Items.Clear();
             if (factoryCache == null || factoryCache.WsdlUri != txtServiceURL.Text)
             {
                 factoryCache = new DynamicProxyFactory(txtServiceURL.Text);
             }
             foreach (ServiceEndpoint endpoint in factoryCache.Endpoints)
             {
                 cboEndPoint.Items.Add(endpoint.Name);
             }
         }
         catch (Exception ex)
         {
             if (ex.Message.Contains("There was an error downloading"))
             {
                 MessageBox.Show("Specified web service invalid or not available!\r\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
             else
             {
                 MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
         Cursor.Current = Cursors.Default;
     }
 }
        public void properties_which_are_marked_as_ignored_are_not_proxied()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new Mock <IRepositoryFactory>();
            var stateTracker         = new EntityStateCache();
            var proxyFactory         = new DynamicProxyFactory(metadataFactory, new NullLogger());

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory))
            {
                var factory = new DynamicProxyFactory(metadataFactory, new NullLogger());
                var item    = new EntityWithIgnoredProperty
                {
                    Id      = "1",
                    Ignored = new AnotherEntity {
                        Id = "2"
                    },
                    Proxied = new AnotherEntity {
                        Id = "3"
                    }
                };
                var proxy = factory.Create(item, session);
                Assert.True(ProxyUtils.IsProxy(proxy));
                Assert.True(ProxyUtils.IsProxy(proxy.Proxied));
                Assert.False(ProxyUtils.IsProxy(proxy.Ignored));
            }
        }
Esempio n. 9
0
        private DynamicProxy CreateDynamicProxy()
        {
            string serviceWsdlUri = ServiceAddress;

            // create the dynamic proxy factory, that downloads the service metadata
            // and create the dynamic factory.
            DynamicProxyFactory factory = new DynamicProxyFactory(serviceWsdlUri);

            //Setup timeout
            var bindingList = factory.Bindings;

            if (bindingList != null)
            {
                foreach (var binding in bindingList)
                {
                    binding.OpenTimeout    = new TimeSpan(0, 30, 0);
                    binding.ReceiveTimeout = new TimeSpan(0, 30, 0);
                    binding.SendTimeout    = new TimeSpan(0, 30, 0);
                    binding.CloseTimeout   = new TimeSpan(0, 30, 0);
                }
            }
            // operations
            DynamicProxy proxy = factory.CreateProxy(OperationContractName);

            return(proxy);
        }
Esempio n. 10
0
        public void factory_creates_meta_data_correctly_from_a_proxy_object()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new Mock <IRepositoryFactory>();
            var stateTracker         = new EntityStateCache();
            var proxyFactory         = new DynamicProxyFactory(metadataFactory, new NullLogger());

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory))
            {
                var factory = new DynamicProxyFactory(metadataFactory, new NullLogger());
                var item    = new Parent
                {
                    Id    = "1",
                    Child = new Child {
                        Id = "2"
                    },
                    Children = new List <Child> {
                        new Child {
                            Id = "3"
                        }
                    }
                };
                var proxy          = factory.Create(item, session);
                var parentMetadata = metadataFactory.Create(proxy);
                Assert.Equal("Parent", parentMetadata.Name);

                var childMetadta = metadataFactory.Create(proxy.Child);
                Assert.Equal("Child", childMetadta.Name);
            }
        }
Esempio n. 11
0
        public static void Test()
        {
            ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(SkipCertValidation);
            string      baseAddress = "https://" + Environment.MachineName + ":8888/Service";
            ServiceHost host        = new ServiceHost(typeof(Service), new Uri(baseAddress));

            host.AddServiceEndpoint(typeof(ITest), GetBinding(), "");
            host.Description.Behaviors.Add(new ServiceMetadataBehavior {
                HttpsGetEnabled = true
            });

            host.Credentials.UserNameAuthentication.UserNamePasswordValidationMode  = UserNamePasswordValidationMode.Custom;
            host.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new MyPasswordValidator();
            host.Authorization.PrincipalPermissionMode = PrincipalPermissionMode.UseAspNetRoles;

            host.Open();
            Console.WriteLine("Host opened");

            DynamicProxyFactory factory = new DynamicProxyFactory(baseAddress + "?wsdl");

            DynamicProxy      proxy       = factory.CreateProxy("ITest");
            ClientCredentials credentials = proxy.GetProperty("ClientCredentials") as ClientCredentials;

            credentials.UserName.UserName = "******";
            credentials.UserName.Password = "******";

            Console.WriteLine(proxy.CallMethod("Hello"));

            Console.Write("Press ENTER to close the host");
            Console.ReadLine();
            host.Close();
        }
Esempio n. 12
0
        private static void DynamicServiceInvoke(string wsdlUri, string operationName, object[] operationParameters,
                                                 HeaderData headerData)
        {
            var factory         = new DynamicProxyFactory(wsdlUri);
            var serviceContract = factory.Contracts.FirstOrDefault();

            // create the DynamicProxy for the contract  and perform operations

#if DEBUG
            Console.WriteLine("Creating DynamicProxy to GenericJobScheduler Service");
#endif
            if (serviceContract != null)
            {
                DynamicProxy dynamicProxy = factory.CreateProxy(serviceContract.Name);

                var innerChannel = dynamicProxy.GetProperty("InnerChannel") as IClientChannel;
                if (innerChannel != null)
                {
                    using (new OperationContextScope(innerChannel))
                    {
                        OperationContext.Current.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader(headerData.HeaderName, headerData.HeaderNamespace,
                                                                                                       headerData.DataAsXmlString));
                        var result = dynamicProxy.CallMethod(operationName, operationParameters);
                    }
                }
            }
        }
Esempio n. 13
0
        public void TestWCFProxy()
        {
            string wsdlUrl = "http://localhost/HappyHutService/HappyHutService.svc";
            DynamicProxyFactory factory = new DynamicProxyFactory(string.Format("{0}?wsdl", wsdlUrl));

            Assert.IsNotNull(factory);
        }
        public void objects_with_inheritance_chain_are_proxied_correctly()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var proxyFactory         = new DynamicProxyFactory(metadataFactory, new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new RepositoryFactory(proxyFactory);
            var parentMapper         = new Mock <IMapper <Parent> >();

            repositoryFactory.Register <Parent>(x => parentMapper.Object);
            var childMapper = new Mock <IMapper <Child> >();

            repositoryFactory.Register <Child>(x => childMapper.Object);

            var stateTracker = new EntityStateCache();

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory, stateTracker, proxyFactory))
            {
                var entity = new ParentWithInheritedChild
                {
                    Id   = "1",
                    Type = new SuperTypeA {
                        Id = "1"
                    }
                };
                var proxy = proxyFactory.Create(entity, session);
                Assert.True(proxy.Type is SuperTypeA);
            }
        }
Esempio n. 15
0
 private void cboEndPoint_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (txtServiceURL.Text.Trim().Length > 0)
     {
         try
         {
             cboMethodName.Items.Clear();
             if (factoryCache == null || factoryCache.WsdlUri != txtServiceURL.Text)
             {
                 factoryCache = new DynamicProxyFactory(txtServiceURL.Text);
             }
             ServiceEndpoint endpoint = (from ep in factoryCache.Endpoints
                                         where ep.Name == cboEndPoint.Text
                                         select ep).FirstOrDefault();
             if (endpoint != null)
             {
                 string       contractName = endpoint.Contract.Name;
                 DynamicProxy proxy        = factoryCache.CreateProxy(contractName);
                 Type         proxyType    = proxy.ProxyType;
                 foreach (OperationDescription operation in endpoint.Contract.Operations)
                 {
                     cboMethodName.Items.Add(operation.Name);
                 }
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
 }
        public void depdendencies_are_incremented_when_property_set()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new Mock <IRepositoryFactory>();
            var stateTracker         = new EntityStateCache();
            var proxyFactory         = new DynamicProxyFactory(metadataFactory, new NullLogger());

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory.Object, stateTracker, proxyFactory))
            {
                var factory = new DynamicProxyFactory(metadataFactory, new NullLogger());
                var parent  = factory.Create(new Parent {
                    Id = "parent"
                }, session);
                var child = factory.Create(new Child {
                    Id = "child"
                }, session);
                parent.Child = child;

                var parentState = stateTracker.Get(parent);
                Assert.Equal(2, parentState.Dependencies.Sequence);

                var childState = stateTracker.Get(child);
                Assert.Equal(1, childState.Dependencies.Sequence);
            }
        }
        public void circular_dependencies_are_proxied_correctly()
        {
            var metadataFactory      = new AttributeMetadataFactory(new NullLogger());
            var proxyFactory         = new DynamicProxyFactory(metadataFactory, new NullLogger());
            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new RepositoryFactory(proxyFactory);
            var parentMapper         = new Mock <IMapper <Parent> >();

            repositoryFactory.Register <Parent>(x => parentMapper.Object);
            var childMapper = new Mock <IMapper <Child> >();

            repositoryFactory.Register <Child>(x => childMapper.Object);

            var stateTracker = new EntityStateCache();

            using (var session = new GraphSession(new UnitOfWork(stateTracker), new List <IListener>(), queryExecutorFactory.Object, repositoryFactory, stateTracker, proxyFactory))
            {
                var a = new EntityA
                {
                    Id = "a"
                };
                var b = new EntityB
                {
                    Id = "b"
                };
                a.EntityB = b;
                b.EntityA = a;
                var proxy = proxyFactory.Create(a, session);
                Assert.NotNull(proxy);
                Assert.NotNull(proxy.EntityB);
                Assert.NotNull(proxy.EntityB.EntityA);
                Assert.Same(proxy, proxy.EntityB.EntityA);
            }
        }
Esempio n. 18
0
        public ActionResult ResolveService()
        {
            string      serviceAddress = Request["serviceAddress"];
            ServiceInfo serviceInfo    = new ServiceInfo
            {
                ServiceAddress = serviceAddress,
                ContractInfos  = new List <ServiceContractInfo>()
            };

            DynamicProxyFactory factory = new DynamicProxyFactory(serviceAddress);
            //get contracts
            var contracts = factory.Contracts;

            foreach (ContractDescription contract in contracts)
            {
                var contractInfo = new ServiceContractInfo
                {
                    ContractName   = contract.Name,
                    OperationInfos = new List <ContractOperationInfo>()
                };
                serviceInfo.ContractInfos.Add(contractInfo);
                //get methods in each contract
                var operations = contract.Operations;
                foreach (OperationDescription operation in operations)
                {
                    try
                    {
                        var operationInfo = new ContractOperationInfo
                        {
                            OperationName  = operation.Name,
                            ParameterInfos = new List <OperationParameterInfo>()
                        };
                        contractInfo.OperationInfos.Add(operationInfo);
                        //get parameters in each method
                        Type contractType = factory.ProxyAssembly.GetType(contract.Name);

                        var method = contractType.GetMethod(operation.Name);
                        if (method != null)
                        {
                            var parameters = method.GetParameters();

                            foreach (ParameterInfo parameter in parameters)
                            {
                                operationInfo.ParameterInfos.Add(new OperationParameterInfo
                                {
                                    ParameterName = parameter.Name,
                                    ParameterType = parameter.ParameterType.ToString()
                                });
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }
            return(Json(serviceInfo));
        }
Esempio n. 19
0
        public static IServiceCollection AddWithProxy(this IServiceCollection collection, Type interfaceType, Type implementationType, ServiceLifetime lifetime)
        {
            var proxyType         = DynamicProxyFactory.Create(interfaceType, implementationType);
            var serviceDescriptor = new ServiceDescriptor(interfaceType, proxyType, lifetime);

            collection.Add(serviceDescriptor);
            return(collection);
        }
Esempio n. 20
0
        public void dependencies_are_incremented_as_relationships_are_created()
        {
            var stateTracker = new EntityStateCache();
            var stateFactory = new Mock <IEntityStateCacheFactory>();

            stateFactory.Setup(x => x.Create()).Returns(stateTracker);
            var metadataFactory = new AttributeMetadataFactory(new NullLogger());
            var proxyFactory    = new DynamicProxyFactory(metadataFactory, new NullLogger());

            var queryExecutorFactory = new Mock <IQueryExecutorFactory>();
            var repositoryFactory    = new RepositoryFactory(proxyFactory);

            repositoryFactory.Register <Organisation>(session => new Mapper <Organisation>(session, metadataFactory));
            repositoryFactory.Register <AccessGroup>(session => new Mapper <AccessGroup>(session, metadataFactory));
            repositoryFactory.Register <Site>(session => new Mapper <Site>(session, metadataFactory));
            repositoryFactory.Register <Person>(session => new Mapper <Person>(session, metadataFactory));
            var sessionFactory = new GraphSessionFactory(queryExecutorFactory.Object, repositoryFactory, stateFactory.Object, proxyFactory);

            using (var session = sessionFactory.OpenSession())
            {
                var organisation = session.Create(new Organisation
                {
                    Id = "organisation"
                });

                var site = session.Create(new Site
                {
                    Id = "site"
                });

                var accessGroup = session.Create(new AccessGroup
                {
                    Id = "accessGroup"
                });

                var person = session.Create(new Person
                {
                    Id = "person"
                });

                organisation.Add(site);
                organisation.Add(accessGroup);
                site.Add(accessGroup);
                person.Add(organisation);
                person.Add(site);

                var organisationMetadata = stateTracker.Get(organisation);
                var siteMetadata         = stateTracker.Get(site);
                var accessGroupMetadata  = stateTracker.Get(accessGroup);
                var personMetadata       = stateTracker.Get(person);

                Assert.Equal(1, accessGroupMetadata.Dependencies.Sequence);
                Assert.Equal(2, siteMetadata.Dependencies.Sequence);
                Assert.Equal(3, organisationMetadata.Dependencies.Sequence);
                Assert.Equal(4, personMetadata.Dependencies.Sequence);
            }
        }
Esempio n. 21
0
        public void WhenCreatingProxy_ThenImplementsIProxy()
        {
            var proxy = new DynamicProxyFactory().CreateProxy(typeof(IFoo), new Type[0], new object[0]);

            Assert.NotNull(proxy);
            Assert.IsAssignableFrom <IProxy>(proxy);

            //var path = DynamicProxyFactory.Generator.ProxyBuilder.ModuleScope.SaveAssembly(false);
            //Debug.WriteLine(path);
        }
Esempio n. 22
0
        public void DynamicProxyFactory_SimpleAOP_Test()
        {
            ICalculator decorate = DynamicProxyFactory <ICalculator> .Create(_calc,
                                                                             info => Trace.WriteLine($"Before {info}"),
                                                                             info => Trace.WriteLine($"After {info}"),
                                                                             info => Trace.WriteLine($"Error {info}"));

            int i = decorate.Add(1, 2);

            Trace.WriteLine($"Result = {i}");
        }
Esempio n. 23
0
        public async Task DynamicProxyFactory_SimpleAOP_Async_Test()
        {
            ICalculatorAsync decorate = DynamicProxyFactory <ICalculatorAsync> .Create(_calcAsync,
                                                                                       info => Trace.WriteLine($"Before {info}"),
                                                                                       info => Trace.WriteLine($"After {info}"),
                                                                                       info => Trace.WriteLine($"Error {info}"));

            int i = await decorate.AddAsync(1, 2);

            Trace.WriteLine($"Result = {i}");
        }
        /// <inheritdoc cref="IMockedDependencyFactory" />
        public IMockedDependency <T> CreateMockedDependency <T>(MockBehavior behavior)
            where T : notnull
        {
            Ensures.IsInterface <T>();

            var arrangements = new ArrangementCollection();
            var interceptor  = InterceptorFactory.CreateInterceptorFor(behavior, arrangements);
            var proxy        = DynamicProxyFactory.CreateForInterface <T>(interceptor);

            return(new MockedDependency <T>(arrangements, interceptor, proxy));
        }
        /// <inheritdoc cref="IMockedDependencyFactory" />
        public IMockedDependency <T> CreateDecoratedDependency <T>(T decoratee)
            where T : notnull
        {
            Ensures.IsInterface <T>();

            var arrangements = new ArrangementCollection();
            var interceptor  = InterceptorFactory.CreateInterceptorFor(MockBehavior.Partial, arrangements);
            var proxy        = DynamicProxyFactory.CreateDecorator <T>(decoratee, interceptor);

            return(new MockedDependency <T>(arrangements, interceptor, proxy));
        }
Esempio n. 26
0
        /// <summary>
        /// 对标注  的所有属性进行代理
        /// </summary>
        /// <param name="mcf"></param>
        /// <returns></returns>
        public ProducerBootstrap <T> start(RabbitMQOptionsFactory <RabbitMQMsgProducerMap> mcf)
        {
            //精确到MsgController节省启动时间
            List <Type> Producers = typeof(T).Assembly.GetTypes().AsEnumerable()
                                    .Where(type => (typeof(MsgController).IsAssignableFrom(type) && type.IsClass && !type.IsAbstract)).ToList();

            ///类遍历
            for (int i = 0; i < Producers.Count; i++)
            {
                //取到所有类的指定方法
                //没找到Where条件找不到注解的原因所以要分开写
                IEnumerable <FieldInfo> fieldInfos = Producers[i].GetFields();
                //属性便利
                foreach (var fieldinfo in fieldInfos)
                {
                    IEnumerable <CustomAttributeData> attributes = fieldinfo.CustomAttributes;//.Where(type => type.AttributeType == typeof(EFRpcAutowiredAttribute));
                    ///注解遍历
                    foreach (var ab in attributes)
                    {
                        //加载到EFRpcAutowiredAttribute注入并跳出循环
                        if (ab.AttributeType == typeof(EFRpcAutowiredAttribute))
                        {
                            EFRpcAutowiredAttribute autowiredAttribute = new EFRpcAutowiredAttribute();
                            //遍历注解信息
                            foreach (var kv in ab.NamedArguments)
                            {
                                if (kv.MemberName.Equals("version"))
                                {
                                    autowiredAttribute.version = kv.TypedValue.Value.ToString();
                                }
                                else if (kv.MemberName.Equals("runMode"))
                                {
                                    autowiredAttribute.runMode = kv.TypedValue.Value.ToString();
                                }
                            }
                            RabbitMQMsgProducerMap rabbitMQMsgProducer = mcf.getMsgMathsInfoMap().setOptions(mcf.opt);
                            rabbitMQMsgProducer.version = autowiredAttribute.version;
                            rabbitMQMsgProducer.GetClassInfo(Producers[i]);
                            rabbitMQMsgProducer.GetMathsInfoMulti(fieldinfo.FieldType);
                            //创建原对象
                            object obj = Activator.CreateInstance(Producers[i]);
                            //将代理对象注入到属性
                            fieldinfo.SetValue(obj, DynamicProxyFactory.createProxyByInterface(fieldinfo.FieldType, rabbitMQMsgProducer));

                            proxyObjectMap.put(Producers[i].Name, obj);
                            msgConsumerMaplist.Add(rabbitMQMsgProducer);
                            break;
                        }
                    }
                }
            }
            return(this);
        }
        private static void LoggerDynamicProxyTest()
        {
            Console.WriteLine("-------LoggerDynamicProxyTest start-------");
            DynamicProxyFactory <LoggerDynamicProxy> factory = new DynamicProxyFactory <LoggerDynamicProxy>(new DynamicInterfaceImplementor());
            ILogin login = factory.CreateDynamicProxy <ILogin>();

            login.LoginName = "test";
            login.Password  = "******";
            login.TryLogin += login_TryLogin;
            Console.WriteLine("-------LoggerDynamicProxyTest end-------");
            Console.ReadLine();
        }
Esempio n. 28
0
        public void CreateProxy()
        {
            var proxyFactory = new DynamicProxyFactory();
            var service = proxyFactory.CreateProxy<IEchoService>(new ProxyOptions
            {
                EndpointUri = "localhost:3310",
                ServiceKind = ServiceKind.Remote
            }, new IInvokeFilter[0]);

            var result = service.GetServerTime();
            Assert.IsNull(result);
        }
Esempio n. 29
0
        static void Main(string[] args)
        {
            var factory = new DynamicProxyFactory();

            var evalAlgebra    = new EvalAlg(factory);
            var evalSubAlgebra = new EvalSubAlg(factory);
            var printAlgebra   = new PrintAlg(factory);


            Console.WriteLine("The expression '{0}' returns: {1}", printAlgebra.Add(3, 4).Print(), evalAlgebra.Add(3, 4).Eval());
            Console.ReadLine();
        }
Esempio n. 30
0
        private void button1_Click(object sender, EventArgs e)
        {
            var serviceWsdlUri = "http://localhost.fc.local/FundConnect.Authentication.IisHost/Groups.svc?wsdl";

            var factory = new DynamicProxyFactory(serviceWsdlUri);

            var count = 0;

            var myEndpoints = new List <string>( );

            foreach (var endpoint in factory.Endpoints)
            {
                Console.WriteLine("Service Endpoint[{0}]", count);
                Console.WriteLine("\tAddress = " + endpoint.Address);
                Console.WriteLine("\tContract = " + endpoint.Contract.Name);
                Console.WriteLine("\tBinding = " + endpoint.Binding.Name);


                myEndpoints.Add(endpoint.Contract.Name);
            }
            foreach (var endpoint in myEndpoints)
            {
                var dp = factory.CreateProxy(endpoint);

                var operations = factory.GetEndpoint(endpoint).Contract.Operations;

                var proxyType = dp.ProxyType;
                var mi        = proxyType.GetMethods(BindingFlags.Public | BindingFlags.Instance);

                for (var i = 0; i < mi.Length; i++)
                {
                    var name = mi[i].Name;
                    if (operations.FirstOrDefault(x => x.Name == name) != null)
                    {
                        var returnType = mi[i].ReturnType.ToString( );
                        Console.Write("Func: " + returnType + " " + name + "(");
                        var pi = mi[i].GetParameters( );
                        for (var j = 0; j < pi.Length; j++)
                        {
                            var param = pi[j].ParameterType.FullName + " " + pi[j].Name;
                            Console.Write((j > 0 ? "," : "") + param);
                        }
                        Console.WriteLine(")");
                    }
                }
                dp.Close( );
            }
            Console.ReadKey( );
        }
Esempio n. 31
0
        private void ReloadFromService()
        {
            _dynamicProxyFactory = new DynamicProxyFactory(EvaluateExpression(cmbURL.Text.Trim(), _taskHost.VariableDispenser).ToString());

            cmbServices.Items.Clear();
            cmbMethods.Items.Clear();
            grdParameters.Rows.Clear();
            foreach (KeyValuePair <string, WebServiceMethods> service in
                     from contract in _dynamicProxyFactory.Contracts
                     from service in _dynamicProxyFactory.AvailableServices
                     where service.Key == contract.Name
                     select service)
            {
                cmbServices.Items.Add(new ComboBoxObjectComboItem(service.Value, service.Key));
            }
        }
Esempio n. 32
0
        public static void Test()
        {
            string baseAddress = "http://" + Environment.MachineName + ":8000/Service";
            ServiceHost host = new ServiceHost(typeof(Service), new Uri(baseAddress));
            host.AddServiceEndpoint(typeof(IService), new BasicHttpBinding(), "");
            host.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true });

            host.Open();
            Console.WriteLine("Host opened");

            DynamicProxyFactory factory = new DynamicProxyFactory(baseAddress + "?wsdl");

            DynamicProxy dynamicProxy = factory.CreateProxy("IService");
            Console.WriteLine(dynamicProxy.CallMethod("GetData", 123));

            Type proxyType = dynamicProxy.ProxyType;
            MethodInfo getDataUsingDCMethod = proxyType.GetMethod("GetDataUsingDataContract");
            Type dcType = getDataUsingDCMethod.GetParameters()[0].ParameterType;
            DynamicObject obj = new DynamicObject(dcType);
            obj.CallConstructor();
            obj.SetProperty("BoolValue", true);
            obj.SetProperty("StringValue", "Hello world");

            DynamicObject result = new DynamicObject(
                dynamicProxy.CallMethod(
                    "GetDataUsingDataContract",
                    obj.ObjectInstance));

            Console.WriteLine(result.GetProperty("StringValue"));

            Console.Write("Press ENTER to close the host");
            Console.ReadLine();
            host.Close();
        }
 private DynamicProxy GetSoapProxy(string serviceUri, string contract)
 {
     DynamicProxyFactory factory = null;
     DynamicProxy proxy = null;
     try
     {
         factory = new DynamicProxyFactory(serviceUri);
         proxy = factory.CreateProxy(contract);
     }
     catch (Exception ex)
     {
         string errMsg = "Error creating Soap Proxy: " + ex.Message + "\n";
         if (ex.InnerException != null)
             errMsg += "Inner Exception = " + ex.InnerException.Message + "\n";
         errMsg += "\nserviceUri: " + serviceUri;
         errMsg += "\ncontract: " + contract;
         m_log.WriteEntry(errMsg, EventLogEntryType.Error);
     }
     return proxy;
 }