日期:2014-05-18 浏览次数:21424 次
[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],不使用的则不序列化传输。