日期:2014-05-18 浏览次数:21573 次
[OperationContract]
string GetData();
[OperationContract]
string GetDataB();
[OperationContract]
void Ret(out string str, out string str2);
//datatable
[OperationContract]
System.Data.DataTable GetDataByTable();
public void Ret(out string str, out string str2)
{
str = "str";
str2 = "str2";
}
public string GetData()
{
return string.Format("A");
}
public string GetDataB()
{
return string.Format("B");
}
public System.Data.DataTable GetDataByTable()
{
DataTable dt= new DataTable();
dt.Columns.Add("ss");
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
dr["ss"] = "ss";
return dt;
}
[ServiceContract]
public interface IWcfService
{
[OperationContract]
string GetData();
[OperationContract]
string GetDataB();
[OperationContract]
void Ret(out string str,out string str2);
[OperationContract]
System.Data.DataTable GetDataByTable();
// TODO: 在此添加您的服务操作
}
//访问
IWcfService server;
private void Form1_Load(object sender, EventArgs e)
{
server = ChannelFactory<IWcfService>.CreateChannel
(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:918/WcfService"));
}
private void btnA_Click(object sender, EventArgs e)
{
DataTable dt = server.GetDataByTable();
MessageBox.Show("");
}
private void btnB_Click(object sender, EventArgs e)
{
string str,str2;
server.Ret(out str,out str2);
MessageBox.Show(str2);
}
public System.Data.DataTable GetDataByTable()
{
DataTable dt= new DataTable("temp");
dt.Columns.Add("ss");
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
dr["ss"] = "ss";
return dt;
}
------解决方案--------------------
你可以直接定义了
public class ErrInfo
{
public short signErr;
public string strErr;
}
然后就可以用来传入传出,不受限制,也可以添加[DataContract]说明,这个[DataContract]是对于部分不可序列化的属性的情况下,只传递部分属性而用的,当添加了[DataContract]后,每个属性或字段都要有[DataMember],不使用的则不序列化传输。