首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于wcf传递自定义对象,解决马上结贴

2012-04-21 
关于wcf传递自定义对象,急,在线等,解决马上结贴我刚开始做wcf,我看到网上的例子都是很简单的,我想能传递自

关于wcf传递自定义对象,急,在线等,解决马上结贴
我刚开始做wcf,我看到网上的例子都是很简单的,我想能传递自己的类或结构我先把我的代码贴出来,希望高手帮我指导一下,

C# code
//服务的接口[ServiceContract]    public interface IWcfService    {         //test        [OperationContract]        string GetData();        [OperationContract]        void Ret(out string str, out string str2);        //上面两个函数都能正常调用,但下面需要返回ErrInfo 的自定义对象,就不知道怎么操作了,        [OperationContract]        DataTable GetDataTable(string strSql, out ErrInfo errInfo);        [OperationContract]        ErrInfo  GetDataTable();           } // 使用下面示例中说明的数据约定将复合类型添加到服务操作。    [DataContract]    public class ErrInfo    {        private short SignErr;        private string StrErr;        public ErrInfo(short signErr, string strErr)        {            SignErr = signErr;            StrErr = strErr;        }                [DataMember]        public short signErr        {            get            {                return SignErr;            }            set            {                SignErr = value;            }        }        [DataMember]        public string strErr        {            get            {                return StrErr;            }            set            {                StrErr = value;            }        }//函数的实现我就不贴了,没得问题,下面是客服端的接口[ServiceContract]    public interface IWcfService    {        //[OperationContract]        //string GetData();        [OperationContract]        string GetDataB();        [OperationContract]        void Ret(out string str,out string str2);         //这里我不知道怎么写返回对象函数的接口      } private void btnA_Click(object sender, EventArgs e)        {            string str, str2;            server.Ret(out str, out str2);//所以也没办法调用,希望高手指点            MessageBox.Show(str2);        }


[解决办法]
WCF中不建议使用OUT REF等。这类意义是传的是引用地址。但是WCF的通信跨了进程。内存引用地址没有意义了。
[解决办法]
推荐多用用,而不是不建议,因为这样可以解决多个返回值的问题。
对于OUT关键字,其实微软默认对有返回值的函数,都改造成了OUT关键字的Void函数了。而REF关键字也完全支持,没任何问题,只不过这时传入和传出的是2个不同的对象,非同一个对象引用。

~~~~~~~1234期待测试结果
[解决办法]
1、可以使用返回值(定义返回值的类,包含DataTable及你这个要out ref的字段)
2、可以使用回调的方式把值回调给对方。
[解决办法]
我没看到你的server是啥——“ErrInfo errInfo= server.GetErr();”
你这里凭空跑出一个server来,我只能认为你这类的server是对的,如果得不到任何内容,说明server有问题,但是你始终没给出客户端完整代码,另外我在你的另外一个帖子里给你例子了,你自己不看,完整的示例代码都有,自己下载了分析比较,你的server没写对。

热点排行