2010-09-03 65 views
0

我非常确定这是一个愚蠢的问题,但无论如何这里。我有一个WCF数据服务暴露一个对象,让我们说人。此Person对象位于Domain.Person的命名空间中。我有一个带WCF数据服务代理的客户端。该客户端具有与引用的Domain.Person类一起使用的代码。但是,代理正在返回一个不同的类型,Client.Person,并且它抱怨无法在两者之间进行转换。WCF数据服务代理类

所以,除了我是愚蠢的(可能),是不是代理应该返回一种Domain.Person?如果不是,那么Client.Person应该不一样吗?对不起,有点困惑。

回答

1

我对WCF数据服务没有经验,但在我看来,代理生成了它自己版本的Domain.Person类,并且正在使用它。
添加'普通'wcf服务引用时,可以指定在生成代理时可以重用哪些类型的程序集。这隐藏在您选择WCF服务的对话框中的“高级”按钮下。
如果你确定这是启用的,我会尝试打开生成的代理(显示所有文件,你可以看到生成的.cs文件),并将类型与你的域类型进行比较。如果有任何显着差异,请将它们添加到您的域类型中,删除服务引用并再次添加它。冲洗 - 重复...

再一次,我的WCF数据服务的经验是不存在的,所以也许有人有一个更加明确的答案。

+0

啊,对,我检查了包含服务引用的项目,并注意到包含实际域对象的项目未被引用。然后,我尝试添加此作为参考,以了解客户端是Sliverlight,并且它不能引用域对象项目,因为这不是Silverlight项目。很明显,域对象应该是客户不可知的,还有什么进一步的想法?非常感谢你的帮助。 – 2010-09-03 09:23:11

+0

要么将​​你的域对象隔离在Silverlight类库中,而要在你的客户端和服务器中引用它(这可以从Silverlight 4开始 - 参见http://msmvps.com/blogs/kevinmcneish/archive/2010/05/28/silverlight或者创建一个silverlight类库并将文件链接到它中,就像这里解释的一样:http://stackoverflow.com/questions/3122169 /添加引用到Silverlight的项目距其它非Silverlight的项目 – stombeur 2010-09-03 11:03:32