- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究在生产代码中使用响应式 UI 的可行性。有些功能确实很吸引人,但我担心依赖这个库。其中包括:
古怪的命名和约定。例如, protected 成员以小写字母开头,而 RaiseAndSetIfChanged
方法取决于以下划线开头的私有(private)成员。我知道 Paul Betts(ReactiveUI 作者)有 Ruby 背景,所以我猜这就是奇怪命名的根源。然而,这会给我带来一个真正的问题,因为在我的项目中强制执行标准命名(按照 Stylecop)。即使不强制执行,我也会担心由此导致的命名不一致。
缺乏文档/样本。有一些文档和一个孤独的示例。然而,文档只是一系列(旧的)博客文章,示例基于库的 V2(现在是 V4)。
部分设计有些奇怪。例如,日志记录是抽象的,以便不依赖于特定的日志记录框架。很公平。然而,由于我使用 log4net(而不是 NLog),我将需要我自己的适配器。我认为这需要我实现 IRxUIFullLogger,其中包含大量方法(远远超过 50 个)。我本以为更好的方法是定义一个非常简单的接口(interface),然后在 ReactiveUI 中提供扩展方法以促进所有必要的重载。此外,NLog 程序集依赖于这个奇怪的 IWantsToRegisterStuff
接口(interface),但我无法依赖它(因为它是一个内部接口(interface))。我希望我不需要那个......
无论如何,我关心的是图书馆的整体设计。有人被这个咬过吗?
我已经广泛使用 MVVM Light。我知道保罗写了一篇博客文章,他解释说从技术上讲你可以同时使用两者,但我更关心的是可维护性。我怀疑将两者混合在一个人的代码库中会非常困惑。
有人有在生产中使用响应式 UI 的实践经验吗?如果是这样,您能减轻或解决我的上述担忧吗?
最佳答案
让我们逐一分析您的疑虑:
#1. "Whacky naming and conventions."
现在 ReactiveUI 4.1+ 有了 CallerMemberName,您根本不必使用这些约定(即使如此,您也可以通过 RxApp.GetFieldNameForPropertyFunc 覆盖它们)。只需将属性写为:
int iCanNameThisWhateverIWant;
public int SomeProperty {
get { return iCanNameThisWhateverIWant; }
set { this.RaiseAndSetIfChanged(ref iCanNameThisWhateverIWant, value); }
}
#2. Lack of documentation/samples
这是合法的,但这里还有更多文档/示例:
#3. "I would have thought a far better approach would be to define a very simple interface and then provide extension methods within ReactiveUI to facilitate all the requisite overloads"
实现 IRxUILogger
相反,它只有很少的两个方法:) ReactiveUI 将填充其余部分。 IRxUIFullLogger
仅在您需要时才出现。
"In addition, there's this weird IWantsToRegisterStuff interface "
您不需要了解这一点:)这仅用于处理 ReactiveUI 自身初始化,这样您就不必拥有样板代码。
- "I suspect it would be horribly confusing having both intermingled in one's code base."
不是真的。只需将其视为“具有 SuperPowers 的 MVVM Light”即可。
关于wpf - ReactiveUI 生产准备好了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14436861/
我的代码在下面,演示站点在这里:http://glimmer.rstudio.com/kdavenport/test1/ 第一个输入(下拉菜单)加载 global.R 中定义的数据框 第二个输入(下拉
我使用了一个可移植模板创建了一个 Xamarin 应用程序,并且我已经在可移植库和 Android 库中安装了响应式(Reactive) UI。但是,当我将应用程序部署到我的手机并导致触发 Raise
我有 WPF 列表框: 我喜欢使用后面的代码按名称绑定(bind) ListBox 的能力:this.OneWayBind(ViewModel, vm
我喜欢 ReactiveUI 的基于代码的绑定(bind)机制。但是,有时您需要使用 XAML 绑定(bind)。在这些情况下,需要在 View 和 ViewModel 之间正确设置 DataCont
在将我的项目中的 Xamarin Forms 包更新到 3.4.0.1009999 后,当使用 ReactiveUI x.DiscountSliderValue).Throttle(TimeSpan.
我正在测试 ReactiveUI,看起来很不错。 但是,我对 MessageBus 有点困惑。 示例代码: var bus = new MessageBus(); int result = -1; b
我无法在设计时在Visual Studio中使用ViewModelViewHost。这是设计使然还是我设置有误? 在我看来,我有: Locator.CurrentMutable.Initializ
我正在将 MvvmCross 与 ReactiveUI 进行比较,用于 Win Store、WP8、iOS、Droid 上的一个主要制药项目。我们已经选择了 Xamarin。 我对 ReactiveU
RX官方博客上有此example: var scheduler = new TestScheduler(); var xs = scheduler.CreateColdObservable(
ReactiveUI.Routing要求我们在Splat容器(Locator.CurrentMutable)中注册 View 。如果我未在Splat中注册,则无法正常工作。 如果我们正在使用其他一些I
所以,当我为我的系统开发新功能时,我也尝试做 TDD - 遗憾的是,现在对于旧功能来说代码太大了。 但是,我发现有时在测试过程中会遇到困难 - 特别是在使用 Delay 和 Throttle 时。 我
所以,当我为我的系统开发新功能时,我也尝试做 TDD - 遗憾的是,现在对于旧功能来说代码太大了。 但是,我发现有时在测试过程中会遇到困难 - 特别是在使用 Delay 和 Throttle 时。 我
我一直在研究在生产代码中使用响应式 UI 的可行性。有些功能确实很吸引人,但我担心依赖这个库。其中包括: 古怪的命名和约定。例如, protected 成员以小写字母开头,而 RaiseAndSetI
我正在将 WPF 应用程序移植到 Windows 应用商店应用程序。我有一些要放入可移植类库的 View 模型。该代码使用 reactui 框架。我创建了库,并使用 nuget 包管理器将 react
我通过 nuget 下载最新的 ReactiveUI (5.0.2) 到我基于 .NET 4.5 的项目。 我创建了具有一个属性的简单 View 模型类: using System; using Sy
在我使用 ReactiveUI 的 WPF 应用程序中,我注意到一个性能不佳的区域。 我有一个 View 模型,其中包含许多其他轻量级 View 模型(想想 30ish)。这些嵌套的 View 模型很
我有一个关于 reactiveui View 模型的问题。 我的 View 模型上有两个属性,月和年,并希望有一个进一步的输出属性 DateLabel,它将两者结合起来并很好地格式化,例如“2015
我查看了许多 ReactiveUI 示例,但我看不到一个很好的简单示例来说明如何处理异常,即应该向用户显示一条消息。 (如果有一个很好的例子,有人可以指点我吗?)。 我的第一个问题是如何使用 Reac
我有一个窗口使用 ReactiveUI Interaction 打开第二个窗口作为模态对话框,然后从第二个窗口中的 ListBox 返回数据。 问题是当 .ShowDialog() 完成时,ViewM
我有一个 WPF MVVM 应用程序。我的模型对象是我可以完全控制的 POCO。这些对象中的某些属性之间存在关系。 例如:假设我有 public class Model { public Ob
我是一名优秀的程序员,十分优秀!