2014-03-28 174 views
-1

我想understaned約之後WCF我創建了一個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中的實例嗎?

我的錯誤消息: 錯誤3名稱空間'WebApplication1.ServiceReference1'中不存在類型或命名空間名'Class2'(缺少程序集引用嗎?)C:\ adt-bundle-windows-x86_64- 20131030 \ workspace \ ServerSide \ WcfService1 \ WebApplication1 \ Default.aspx.cs 15 31 WebApplication1

+1

首先,您不能創建抽象類的實例: - class1和class2。其次,什麼是Service1Client? – Max

+0

您是否曾經需要在WCF服務中使用Class1或Class2?任何方法是否會返回該類的類型,或者將類類型作爲方法參數傳遞? – Scampbell

+0

是的,我想創建從class2中引入對象的方法和從其他類中實現class1 – Ido

回答

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作爲參數或返回值,將其移入不同的項目並從客戶端和服務中引用它。

+0

首先感謝 第二,第二類不是抽象的,這是我現在不好的 ,是否可以在我的客戶端上創建class2的實例而無需實現返回Class2的對象的WCF服務方法? – Ido

+0

Class2是抽象的,或者你發佈的示例代碼是不正確的:「public abstract class Class2」 – Scampbell

+0

如果你有一個服務方法,要麼接受一個Class2的實例作爲參數,要麼返回它的一個實例,它應該在服務參考中創建。如果您沒有使用它的任何方法,那麼它不應該使用它上面的[DataContractAttribute]。那將只是一個普通班級。當您使用Class2構建項目時,您可以從客戶端引用該項目並使用Class2。 – Scampbell

相關問題