2011-11-22 223 views
1

我有三个项目:一个UI(Web),一个WCF服务和一个类型库(带有业务对象)。 我已经在UI和WCF服务中包含了类型库。 我已经从UI创建了对服务的服务引用。WCF服务参考跳过类型

当我在UI项目中查看服务引用的对象浏览器时,它并没有包含所有的对象类型。我怀疑它所缺少的类型是我所拥有的类型并不是巧合,因为我包含了类型库。

我的问题是这样的:我的服务引用是否智能,并且认识到它不需要为我已经引用的类型创建类型(在代理中)?一切都很好,我喜欢这样的行为,所以我不抱怨...只是想知道。引用实际的类型库是非常好的,因为那时我的所有getter和setter都可以在消费者(我的UI)中工作。

+1

您的类型是否使用'DataContract'属性进行装饰? – Amy

回答

5

看看引用属性。你会发现“从引用程序集中重用类型...”开关。启用此功能意味着代理生成器重新使用它可以在客户端本地访问的类。

+0

+1忘记了那个复选框! – Chris

0

您不应该需要对您的类型库的引用。

通过在Visual Studio中添加服务引用,您的UI Web项目将生成它从使用该服务所需的所有对象类型。

这就是说,你当前的行为可能源于“引用程序集中的重用类型”,它只会生成本地不能访问的类。

+0

我其实想要参考我的类型库。我意识到这不是必要的,对于大多数分布式应用(服务体系结构占优势)来说,这是完美的,但在我们的例子中,包括类型库允许我们使用我们实体包含的getter和setter。 –

+0

@Jeremy我错过了那一点,让获得者和制定者获得什么好处?我只问,因为我总是只消费一种服务来获得正确的对象和类型,你会介意给出一个例子吗? – Chris

+0

是的。首先,你不仅得到了getters/setters,还有你标记为[IgnoreDataMember]的任何属性。我们使用它来使用仅在客户端的查找库将一些结果代码(认为状态代码,即“WA”)转换成值(“华盛顿”)。我们可以使用扩展方法或其他方法来实现,但我们已将其放入业务对象中。现在我想到了,我认为几乎任何东西都可以被替换,并且不需要引用BO库,但我很高兴这是一个选项。 –