コード例 #1
0
        /// <summary>
        ///     Initialize a new instance of <see cref="CallTransmission{TInterface}" />
        /// </summary>
        /// <param name="serializer">The serializer used to serialize/deserialize the objects</param>
        public CallTransmission(INetworkCallSerializer serializer)
        {
            _serializer = serializer;
            var interfaceType = typeof(TInterface).GetTypeInfo();

            if (!interfaceType.IsInterface)
            {
                throw new ArgumentException("Only interfaces accepted.", nameof(TInterface));
            }

            _lazyInterface =
                new Lazy <TInterface>(() => ProxyFactory.CreateProxy <TInterface>(this),
                                      LazyThreadSafetyMode.ExecutionAndPublication);

            _md5 = MD5.Create();
            InitializeInterface(interfaceType);

            _callbacks = new ConcurrentDictionary <uint, ResultCallback>();
        }
コード例 #2
0
 /// <summary>
 ///     Initialize a new instance of <see cref="CallTransmission{TInterface}" /> with a cache
 /// </summary>
 /// <param name="interfaceImplementation">The interface which can be called by the remote side</param>
 /// <param name="serializer">The serializer used to serialize/deserialize the objects</param>
 /// <param name="cache">Contains thread-safe information about the interface methods</param>
 public CallTransmissionExecuter(TInterface interfaceImplementation, INetworkCallSerializer serializer, ExecuterInterfaceCache cache)
 {
     _interfaceImplementation = interfaceImplementation;
     _serializer = serializer;
     Cache       = cache;
 }
コード例 #3
0
 /// <summary>
 ///     Initialize a new instance of <see cref="CallTransmissionExecuter{TInterface}" />
 /// </summary>
 /// <param name="interfaceImplementation">The interface which can be called by the remote side</param>
 /// <param name="serializer">The serializer used to serialize/deserialize the objects</param>
 public CallTransmissionExecuter(TInterface interfaceImplementation, INetworkCallSerializer serializer)
     : this(interfaceImplementation, serializer, ExecuterInterfaceCache.Build <TInterface>())
 {
 }