Ejemplo n.º 1
0
        public bool TryGetReliableSubject <TInput, TOutput>(Uri uri, out IReliableMultiSubject <TInput, TOutput> subject)
        {
            if (!Subjects.TryGetValue(uri.ToCanonicalString(), out SubjectEntity entity))
            {
                subject = null;
                return(false);
            }

            if (entity.Instance is IReliableMultiSubject <TInput, TOutput> result)
            {
                subject = result;
                return(true);
            }

            throw InvalidInstance("ReliableSubject", uri, typeof(IReliableMultiSubject <TInput, TOutput>), nameof(uri));
        }
 /// <summary>
 /// Creates a reliable observable from a reliable multi-subject.
 /// </summary>
 /// <typeparam name="TInput">The input type of the subject.</typeparam>
 /// <typeparam name="TOutput">The output type of the subject.</typeparam>
 /// <param name="subject">The subject.</param>
 /// <returns>A reliable observer to the subject.</returns>
 /// <remarks>
 /// This method is needed to provide an accessible generic method for calling `CreateObserver()` on a reliable multi-subject.
 /// </remarks>
 public static IReliableObserver <TInput> ToReliableObserver <TInput, TOutput>(this IReliableMultiSubject <TInput, TOutput> subject) => subject.CreateObserver();