首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'System.ComponentModel.PropertyChangedEventHandler‘不能从特殊类“System.MulticastDelegate”派生

'System.ComponentModel.PropertyChangedEventHandler‘不能从特殊类“System.MulticastDelegate”派生
EN

Stack Overflow用户
提问于 2009-06-05 18:49:21
回答 1查看 6.9K关注 0票数 5

我正在按照推荐的here开发一个wcf服务。它解决了我最初开发原始.NET 2.0Web服务时名称空间冲突的问题,但我遇到了另一个问题。

我试图传递给wcf服务的对象在客户端中用来聚合来自用户的一堆信息,并且它的一些字段被数据绑定到ui控件(因此实现了PropertyChangedEventHandler)。当我试图在我的客户端项目中编译由svcutil生成的代理时,我得到了标题为这个问题的错误。

从这个对象中提取所有数据并放入一个类中进行发送(然后重建原始类型)似乎是多余的-更不用说花费了非常长的时间。

有解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-05 19:33:57

我能检查一下吗?您是否正在将委托传递给web服务?那是行不通的。它*不能序列化。在最好的情况下,ADO.NET数据服务(.NET 3.5SP1)可以通过将Expression转换为查询字符串来执行类似的操作。但这是你能得到的最接近的结果了。除此之外,您还必须构建一个request对象,该对象用常规属性封装您的意图。

这适用于web服务、wcf服务、tcp等中的任何一个。

*=a委托本质上是一个类型安全的方法句柄(具有可选的目标(实例)引用);例如,它可以表示为xml

(编辑)

从评论中可以看出--这可能仅仅是因为你没有将你的数据契约归类;这意味着它必须推断出契约(它经常会出错)。例如:

代码语言:javascript
复制
[DataContract]
class Foo : IWhateverInterfaces {
    [DataMember]
    public string Bar {get;set;}

    [DataMember]
    public int Baz {get;set;}

    public float NotPartOfTheContract {get;set;}

    public event EventHandler AlsoNotPartOfTheContract;
}

使用[DataContract]时,只有标记为[DataMember]的成员才会被序列化,因此应忽略该事件。这曾经是做数据合同的唯一方式,但微软调整它,以推断合同从字段...一个错误,因为它导致了你刚刚遇到的问题...

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/957474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档