VContainer-integrations/unirx | 集成——UniRx
UniRx 是一个为 Unity 优化的 Rx(响应式扩展)库。
将 VContainer 入口点与 UniRx 结合的示例:
public class FooController : IStartable, IDisposable
{
readonly CompositeDisposable disposable = new CompositeDisposable;
void IStartable.Start()
{
fooObservable
.Subscribe(_ => /* 响应操作 */)
.AddTo(disposable)
}
void IDisposable.Dispose() => disposable.Dispose();
}
如果想创建一个类似 AddTo(this) 的快捷方式,可通过扩展方法简化订阅管理:
public class ControllerBase : IDisposable
{
readonly CompositeDisposable disposable = new CompositeDisposable;
void IDisposable.Dispose() => disposable.Dispose();
public void AddDisposable(IDisposable item)
{
disposable.Add(item);
}
}
public static class DisposableExtensions
{
public static T AddTo<T>(this T disposable, ControllerBase controller)
where T: IDisposable
{
controller.AddDisposable(disposable);
return disposable;
}
}
使用示例:
public class FooController : ControllerBase, IStartable
{
void IStartable.Start()
{
someObservable
.Subscribe(...)
.AddTo(this);
}
}

浙公网安备 33010602011771号