先修复一下,错误的场景 删除不必要的钓场资产 修复into场景 update:更新meta文件,修复报错 update:修复资源 修复第一章节建造 修复建造第三章 update:删除多余内容 update:更新README.md update:还原图标 update:更新README update:更新配置
61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
using System;
|
|
|
|
namespace UniRx
|
|
{
|
|
public static class SubjectExtensions
|
|
{
|
|
public static ISubject<T> Synchronize<T>(this ISubject<T> subject)
|
|
{
|
|
return new AnonymousSubject<T>((subject as IObserver<T>).Synchronize(), subject);
|
|
}
|
|
|
|
public static ISubject<T> Synchronize<T>(this ISubject<T> subject, object gate)
|
|
{
|
|
return new AnonymousSubject<T>((subject as IObserver<T>).Synchronize(gate), subject);
|
|
}
|
|
|
|
class AnonymousSubject<T, U> : ISubject<T, U>
|
|
{
|
|
readonly IObserver<T> observer;
|
|
readonly IObservable<U> observable;
|
|
|
|
public AnonymousSubject(IObserver<T> observer, IObservable<U> observable)
|
|
{
|
|
this.observer = observer;
|
|
this.observable = observable;
|
|
}
|
|
|
|
public void OnCompleted()
|
|
{
|
|
observer.OnCompleted();
|
|
}
|
|
|
|
public void OnError(Exception error)
|
|
{
|
|
if (error == null) throw new ArgumentNullException("error");
|
|
|
|
observer.OnError(error);
|
|
}
|
|
|
|
public void OnNext(T value)
|
|
{
|
|
observer.OnNext(value);
|
|
}
|
|
|
|
public IDisposable Subscribe(IObserver<U> observer)
|
|
{
|
|
if (observer == null) throw new ArgumentNullException("observer");
|
|
|
|
return observable.Subscribe(observer);
|
|
}
|
|
}
|
|
|
|
class AnonymousSubject<T> : AnonymousSubject<T, T>, ISubject<T>
|
|
{
|
|
public AnonymousSubject(IObserver<T> observer, IObservable<T> observable)
|
|
: base(observer, observable)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
} |