我的客戶端有10個表,它需要通過內部WCF加載到服務器。由於所有這些都是內部的,我可以使用任何我想要的技術編寫客戶端和服務器。C# - WCF - 泛型 - [KnownType(typeof(xxx))]
在客戶端,我想使用LINQ從表中的數據裝載到一個列表,列表等等...
在服務器上,我認爲有一個[DataContract]如下:
[DataContract]
[KnownType(typeof(Table1))]
[KnownType(typeof(Table2))]
[KnownType(typeof(Table3))]
public class GenericType<T>
{
[DataMember]
public List<T> Data { get; set; }
}
然後添加代表客戶端上匹配表的類。
[DataContract]
public class Table1
{
[DataMember]
public int UserID { get; set; }
[DataMember]
public string FullName { get; set; }
}
[DataContract]
public class Table2
{
[DataMember]
public int UserID { get; set; }
[DataMember]
public string Address1 { get; set; }
}
[DataContract]
public class Table3
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
}
當我創建客戶參考,我沒有收到服務器上聲明的所有類和似乎只有一日指定的[DataContract]變得對客戶可見[KnownType。
我的印象是,泛型是爲了允許多種類型但我是真的認爲WCF只能處理一個[KnownType]×類?
如果是這樣,我的唯一方法就是將複製並粘貼10次GenericType類,並在每個副本上更改[KnownType] ??
原因如果這是唯一的解決方案,那麼使用泛型的真正好處而不是直接定義列表,我的參數列表?
任何想法將有助於澄清這裏
時出現的問題我的腦海裏,因爲除非的WCF方法之一就是採用任何聲明爲[DataContract]類的......似乎WCF不會帶來那些客戶的課程。
這是預期的情況嗎?
發佈預期總是好的! – esskar
@esskar更新 –
「我收到錯誤」。什麼是確切的錯誤?此外,KnownTypes「Table1」,「Table2」等也需要用[DataContract]和[DataMember]標記。 – ErnieL