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();