我有一個解決方案,其中包含一個WCF項目和一個Project for Data Classes,每個類都屬於「DT」類。每個DT類都標記爲DataContract(),每個屬性標記爲DataMember()。WCF DataContract類未在客戶端應用程序中定義
[DataContract()]
public class AttachmentDT : IAttachment
{
private System.Int32 mAttachmentID;
[DataMember()]
public System.Int32 AttachmentID
{
get { return mAttachmentID; }
set { mAttachmentID = value; }
}
private System.DateTime mCreateDate;
[DataMember()]
public System.DateTime CreateDate
{
get { return mCreateDate; }
set { mCreateDate = value; }
}
private System.Byte[] mFileBytes;
[DataMember()]
public System.Byte[] FileBytes
{
get { return mFileBytes; }
set { mFileBytes = value; }
}
private System.String mFileName;
[DataMember()]
public string FileName
{
get { return mFileName; }
set { mFileName = value; }
}
}
我的WCF項目有一個對數據類項目的類引用,所以我有權訪問這些類。如果我沒有在WCF界面中使用它們中的任何一個,那麼使用WCF的客戶端應用程序也不能看到數據類。爲什麼是這樣?我必須認真地爲每個我希望客戶端看到的數據類創建一個空方法嗎?例如,在我的WCF接口,我創建了一個無用的方法...
[OperationContract()]
void AttachmentDT(AttachmentDT a) { }
如果我有我想給可視性太20個數據類,我必須做的每一個這個愚蠢的廢話?請告訴我有一個不那麼無知的方式來獲得這些DT類的可見性。
當我添加到我的客戶端應用程序的WCF引用。我沒有選中重用類型框,因爲我也碰到了被檢查的主要問題。我基本上已經創建了一個「基礎」web服務,供多個應用程序使用。每個應用程序只需要某些服務本身,但WCF中的Data類需要對每個應用程序都可見。這可以防止大量代碼的重複。在DataContract上使用Serializable屬性可以達到這個目的嗎? – user1732364 2014-09-18 17:30:39
你不應該明確地將它標記爲Serializable。您是否嘗試通過KnownType/ServiceKnownType屬性公開它?另外,IAttachment界面的可見性是什麼? – TGOK 2014-09-19 14:28:33