我正在尝试使用CSLA(最新版本)以及ReactiveUI/Reactive Extensions。
使用ReactiveUI(bind/OnewayBind)创建WPF结合并使用Toproperty方法时,似乎基本逻辑使用Rx可观察的rx可观察。fromeventPattern将CSLA的属性变为CSLA的属性事件挂钩。
发生的问题是CSLA认为这些处理程序应该是可序列化的。
这是由BindableBase中的代码确定的
if (value.Method.IsPublic &&
(value.Method.DeclaringType.IsSerializable ||
value.Method.IsStatic))
_serializableChangedHandlers = (PropertyChangedEventHandler)
System.Delegate.Combine(_serializableChangedHandlers, value);
else
_nonSerializableChangedHandlers = (PropertyChangedEventHandler)
System.Delegate.Combine(_nonSerializableChangedHandlers, value);
在这种情况下,该方法是在反应性膨胀中创建的匿名代表。这是给出的具有Isserializable == true
这会导致处理程序添加到可序列化列表中。
关于我可能会做的任何建议,以使这些处理程序不添加到可序列化处理程序中?
看来这是reactiveui中的一个错误。如果它们的类型实际上不是可序列化的,并且不是设计用于跨应用程序,过程或网络边界的流动,则不应将其标记为可序列化的。