在客户机上使用wcf类

本文关键字:wcf 客户机 | 更新日期: 2023-09-27 17:54:50

我想了解一些关于wcf我已经创建了一个wcf项目之后,我已经添加了以下类

namespace WcfService1
{
       [DataContract]
       public abstract class Class1 
       {
         string stam;
         bool bstm;
       }
 }

和另一个类

namespace WcfService1
{
       [DataContract]
       public class Class2 : Class1
       {
       }
 }

这是我的服务合同

namespace WcfService1
{
    [ServiceContract]
    public interface IService1
    {
       [OperationContract]
       string GetData(int value);
    }
}

我在解决方案中添加了web应用程序,并在我的wcf服务中添加了服务引用下面是一些来自客户端的代码

Service1Client proxy = new Service1Client();
ServiceReference1.Class2 c = new ServiceReference1.Class2();

现在我的问题是如何在客户端创建class1和class2的实例?

My Error msg:错误3名称空间'WebApplication1 '中不存在'Class2'类型或名称空间。servicerreference1’(您是否缺少一个程序集引用?)C:'adt-bundle-windows-x86_64-20131030'workspace'ServerSide'WcfService1'WebApplication1'Default.aspx.cs 15 31 WebApplication1

在客户机上使用wcf类

Class1和Class2是抽象类,这意味着您不能创建它们的实例。http://msdn.microsoft.com/en-us/library/sf985hc5.aspx

如果你想返回Class1或Class2类型的对象,你必须:

  • 从类定义中删除abstract
  • 实现一个返回Class1或Class2对象的WCF服务方法
  • 重新生成对WCF服务的引用,看起来就像您之前生成ServiceClient1所做的那样

Edit:根据你的评论,听起来你只需要添加一个包含Class2的项目的引用。在使用visual studio时,了解如何做到这一点非常重要。这里有一个关于如何做到这一点的链接:http://msdn.microsoft.com/en-us/library/f3st0d45 (v = vs.100) . aspx

一旦添加了引用,使用Class2在文件的顶部添加一个using语句,如下所示:using WcfService1

如果您没有在服务中使用Class2作为参数或返回值,我建议您将它移到不同的项目中,并从客户端和服务中引用它。