Пример #1
0
        public void BeforeAllTests()
        {
            var description = new ContractDescription(typeof(IGenericContract <int, string>));

            var moduleBuilder = ProxyAssembly.CreateModule(nameof(EmitClientBuilderGenericTest));

            var contractBuilder = new EmitContractBuilder(description);
            var contractType    = contractBuilder.Build(moduleBuilder);
            var contractFactory = EmitContractBuilder.CreateFactory(contractType);

            var sut           = new EmitClientBuilder(description, contractType);
            var clientType    = sut.Build(moduleBuilder);
            var clientFactory = sut.CreateFactory <IGenericContract <int, string> >(clientType);

            Factory = () => clientFactory(CallInvoker.Object, contractFactory(DataContractMarshallerFactory.Default), null);
        }
Пример #2
0
        public IClientBuilder <TContract> GenerateClientBuilder <TContract>()
        {
            var serviceType = typeof(TContract);

            Type clientBuilderType;

            lock (ProxyAssembly.SyncRoot)
            {
                clientBuilderType = ProxyAssembly.DefaultModule.GetType(ContractDescription.GetClientBuilderClassName(serviceType), false, false) !;
                if (clientBuilderType == null)
                {
                    var(description, contractType) = GenerateContract(serviceType);
                    var clientType = new EmitClientBuilder(description, contractType).Build(ProxyAssembly.DefaultModule);
                    clientBuilderType = new EmitClientBuilderBuilder(description, contractType, clientType).Build(ProxyAssembly.DefaultModule);
                }
            }

            return((IClientBuilder <TContract>)Activator.CreateInstance(clientBuilderType));
        }