Beispiel #1
0
        /// <summary>
        /// Reads the value from the link asynchronously
        /// </summary>
        /// <param name="token">The cancellation token</param>
        public async Task <T> ReadAsync(CancellationToken token)
        {
            if (_disposed)
            {
                Exceptions.Throw(new IllegalStateException("Link has been disposed."), Logger);
            }

            string dataType = "";

            dataType = await _reader.ReadStringAsync(token);

            if (dataType == null)
            {
                return(default(T));
            }

            try
            {
                T value = (T)_injector.ForkInjector().GetInstance(dataType);
                await value.ReadAsync(_reader, token);

                return(value);
            }
            catch (InjectionException)
            {
                return(default(T));
            }
        }