简单WCF程序无法将参数为类的值传递到WCF端

 
  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Runtime.Serialization;
using System.ServiceModel.Description;

namespace WCFPractice
{
[DataContract(Name
= " Data " )]
public class ServiceData : IExtensibleDataObject
{
[DataMember(Name
= " Info " )]
private string info;

public string Info
{
get { return info; }
set { info = value; }
}
private ExtensionDataObject extensionData;

public ExtensionDataObject ExtensionData
{
get { return extensionData; }
set { extensionData = value; }
}
}


[DataContract(Name
= " Data " )]
public class ClientData : IExtensibleDataObject
{
[DataMember(Name
= " Info " )]
private string info;
public string extraInfo;
public string Info
{
get { return info; }
set { info = value; }
}
private ExtensionDataObject extensionData;

public ExtensionDataObject ExtensionData
{
get { return extensionData; }
set { extensionData = value; }
}

}

[ServiceContract(Name
= " GO " )]
public interface IService
{
[OperationContract(Name
= " DispInfo " )]
void MakeSense( string info);
[OperationContract(Name
= " DispEntity " )]
void MakeSense(ServiceData serviceData);
}


public class ServiceImplementation : IService
{
public void MakeSense( string info)
{
Console.WriteLine(info);
}
public void MakeSense(ServiceData serviceData)
{
Console.WriteLine(
" Info= " + serviceData.Info + " Extra Data= " + serviceData.ExtensionData);
}

}


// Name = "GO"必须与服务端设置的值一样,这样做是为了能找到该服务
[ServiceContract(Name = " GO " )]
public interface IClient
{
[OperationContract(Name
= " DispInfo " )]
void MakeSense( string info);
[OperationContract(Name
= " DispEntity " )]
void MakeSense(ClientData clientData);

}


class Program
{
static void Main( string [] args)
{
ServiceHost host
= new ServiceHost( typeof (ServiceImplementation),
new Uri( " http://localhost:8080 " )); // Uri随便定义
host.AddServiceEndpoint( typeof (IService), new BasicHttpBinding(), " Make " ); // Make随便定义
host.Open();
ChannelFactory
< IClient > factory = new ChannelFactory < IClient > ( new BasicHttpBinding(),
new EndpointAddress( " http://localhost:8080/Make " )); // 将以上两个地址组合即可
IClient proxy = factory.CreateChannel();
proxy.MakeSense(
" Let's Go " );//能正确调用
ClientData clientData
= new ClientData();
clientData.Info
= " I am Info " ;
clientData.extraInfo
= " I am extra info " ;
proxy.MakeSense(clientData);//clientData传到WCF Service后值为空
((IChannel)proxy).Close();
host.Close();
Console.ReadKey();
}
}
}

转载于:https://www.cnblogs.com/MR-Lee/archive/2011/04/13/2015370.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值