我有一个WPF客户端应用程序通过引用远程WCF服务接收对象。 WCF服务引用是通过Visual Studio的“添加服务引用...”生成的。
每次从WCF服务接收/反序列化对象时,我都希望执行一段代码。该对象需要已经反序列化,因此我可以读取它上面的属性/调用方法。这个解决方案是全局的,而不是我需要添加到每个WCF服务调用的东西。
答案 0 :(得分:4)
从Mike的初步回复开始,我能够提出以下解决方案。
<强>背景强>
<强>预警强>
据我所知,这打破了一些面向对象和责任规则,但解决方案是如此简短,如此简单,适合我当前和预期的未来需求,所以这就是我的目标。当需要在每个客户端反序列化时发生重要逻辑时,此解决方案不太实用。
[DataContract]
public class DataTransferObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
[OnDeserialized]
public void OnDeserialized(StreamingContext context)
{
dynamic app = Application.Current;
if(app != null) //Prevents execution on server-side. This code is meant to only execute at the client
{
PropertyChanged += (sender, args) =>
{
app.IsAnythingDirty = true;
};
}
}
}
密钥
答案 1 :(得分:3)