在客户端上使用wcf类

时间:2014-03-28 19:30:54

标签: c# wcf

我试图理解关于wcf的一些事情我已经创建了一个wcf项目之后我添加了下面的类

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

另一个班级

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

       }
 }

这是我的ServiceContract

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的实例?

我的错误消息: 错误3命名空间“WebApplication1.ServiceReference1”中不存在类型或命名空间名称“Class2”(您是否缺少程序集引用?)C:\ adt-bundle-windows-x86_64-20131030 \ workspace \ ServerSide \ WcfService1 \ WebApplication1 \ Default.aspx.cs 15 31 WebApplication1

1 个答案:

答案 0 :(得分:0)

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

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

  • 从班级定义
  • 中删除abstract
  • 实现返回Class1或Class2
  • 对象的WCF服务方法
  • 重新生成对WCF服务的引用,它看起来像您之前生成的ServiceClient1

编辑:这听起来基于您的评论,就像您只需要在其中添加对Class2的项目的引用。在使用visual studio时,这对于了解如何操作非常重要。这是一个如何做到这一点的链接: http://msdn.microsoft.com/en-us/library/f3st0d45(v=vs.100).aspx

添加引用后,使用Class2在文件顶部添加using语句,如下所示:
using WcfService1

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