Wcf对象类型

问题描述:

尝试在具有相同代码库的两个系统之间发送复杂类型。他们都知道与数据传输介质相同的对象。但是,当我在消费者代理上传递对象时,它在Web服务名称空间中显示为对象而不是应用程序中的对象。Wcf对象类型

有无论如何,我可以定义使用内部对象?

[WebMethod] 
public void Run(TransportObject transport) 

出现在我的应用程序MyNamespace.Webservice.Transport,而不是MyNamespace.Objects

+0

'[WebMethod]'不是WCF - 它是ASMX。 – 2013-01-10 06:44:35

正如亨克所说,WCF中的类型共享是默认行为。

我将有资格通过扩大它并演示了如何实现它:

因此而不是让Visual Studio中为你生成一个服务引用,你可以有WCF创建代理时,执行由使用的ChannelFactory。

例如:

// Create service proxy on the fly 
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile"); 
var proxy = factory.CreateChannel(); 

// Create data contract 
var requestDataContract = new MyRequestType(); 

// Call service operation. 
MyResponseType responseDataContract = proxy.MyServiceOperation(requestDataContract); 

在上面的例子中,IMyServiceContract是您的服务合同,并0​​和MyResponseType是数据的合同,您可以通过引用该服务还引用(它定义了组件使用这些类型)。

[WebMethod]意味着它是一个基于ASMX服务,而不是一个WCF服务下...

[ServiceContract]

[OperationContract]再试一次

在WCF*享类型是可能的,我认为它甚至是默认行为。

+0

@marc_s - 是的,你是对的。我会编辑。 – 2012-03-19 11:47:28