小编Gle*_*son的帖子

ReactiveUI ObservableForProperty生命周期

当我没有在Observer上显式调用Dispose时,我很好奇ObservableForProperty生命周期.在这种情况下,我并不关心如何获得订阅太长时间等.

在传统的.NET中如果你有事件,除非你取消订阅它可能会导致内存泄漏,因为你的对象生命周期绑定到事件.例如,如http://msdn.microsoft.com/en-us/magazine/cc163316.aspx中所述:

事件也可以是强根引用,因此可以有助于强引用路径,从而影响对象的生命周期.公共语言运行时(CLR)2.0中的普通事件是事件源和侦听器之间的双向强引用,因此可以使对象(源或侦听器)保持活动,否则应该已经死亡.

在遇到INotifyPropertyChanged对象时查看ReactiveUI代码库,我注意到您正在使用FromEventPattern订阅INotifyPropertyChange事件.

使用ObservableForProperty是否可以解决这个问题,即通过创建强引用路径来保持对象的存活时间更长?

谢谢,格伦

.net c# garbage-collection system.reactive reactiveui

11
推荐指数
1
解决办法
3295
查看次数

ReactiveUI如何正确使用WhenAnyObservable

我试图第一次使用WhenAnyObservable.

当ReactiveList Count == 0且tipText长度> 0时,我想在订阅中将本地值设置为true,或者相反.

        this.ViewModel.WhenAnyObservable(
            x => x.AutoCompleteItems.CountChanged,
            x => x.ObservableForProperty(y => y.TipText),
            (countChanged, tipText) => countChanged == 0 && tipText.Length > 0);
Run Code Online (Sandbox Code Playgroud)

我无法让这个工作.

有什么技巧我应该做,或者我应该使用其他WhenAny命令之一?

.net wpf reactiveui

7
推荐指数
1
解决办法
2983
查看次数

ReactiveUI依赖注入构造函数

我在ReactiveUI中使用内置的依赖项注入器/ splat注入器。

我有要传递其适用的数据存储库的构造函数。

在其他框架中,它仅对接口使用反射,并使用GetServices调用来满足那些构造函数要求。例如,目前我具有用于创建类的此辅助程序扩展方法:

    /// <summary>
    /// Helper class for having a object's constructor automatically assigned by a "GetService" request.
    /// </summary>
    /// <param name="resolver">The resolver.</param>
    /// <param name="type">The type to register.</param>
    public static void Register<TConcrete, TInterface>(this IMutableDependencyResolver resolver)
        where TConcrete : class
    {
        var concreteType = typeof(TConcrete);

        // Must be a single constructor
        var constructors = concreteType.GetConstructors().Single();

        IList<object> values = new List<object>();

        foreach (var parameter in constructors.GetParameters())
        {
            if (parameter.ParameterType.IsInterface == false)
            {
                throw new InvalidOperationException($"The type {concreteType.Name} has …
Run Code Online (Sandbox Code Playgroud)

c# splat reactiveui

4
推荐指数
1
解决办法
1361
查看次数

标签 统计

reactiveui ×3

.net ×2

c# ×2

garbage-collection ×1

splat ×1

system.reactive ×1

wpf ×1