我被困在這一點,還沒有找到一個實際的答案。 也許我只是沒有搜索正確的條款,對我來說是裸露的。通過WCF服務傳遞指定的泛型類型
具有以下類:
[DataContract]
[KnownType(typeof(SpecifiedItemCollection))]
public class ItemCollection<T> : IEnumerable where T : BaseItem
{
private Dictionary<int, T> items = null;
//Some NON-Generic Methods and Properties
//Some methods like this:
public T DoBla(int _1, bool _2) { ... }
}
[DataContract]
public class SpecifiedItemCollection : ItemCollection<SpecifiedItem>
{
//...
}
[DataContract]
[KnownType(typeof(SpecifiedItem))]
public class BaseItem { ... }
[DataContract]
public class SpecifiedItem : BaseItem { ... }
我如何通過WCF服務提供SpecifiedItemCollection?
我的界面看起來是這樣,但不幸的是它不會工作
[ServiceContract]
public interface IService
{
[OperationContract]
public SpecifiedItemCollection GetCol(int _1, bool _2);
}
而對於其他信息:
是的,我看到你不能通過一般的通過WCF(例如ItemCollection直接),但我發現有幾個消息來源表示你可以通過它們,如果你指定了Generic本身。
那麼,我做錯了什麼? :)
在此先感謝。
編輯:
@ rally25rs: 的問題是,它只是關閉連接。我能夠在我的項目中引用該服務,並相應地生成所需的類/文件。 我可以實例化一個服務名* 客戶 *,但只要我打電話從我服務的方法,這將返回一個SpecifiedItemCollection,它關閉連接。
但無論如何,我現在解決了這個問題。 查看我自己的答案。
你是什麼意思的「它不會工作」?你有構建錯誤嗎?運行時錯誤?沒有錯誤,但WCF只發送空值? – CodingWithSpike 2011-12-21 14:11:30
如果您希望將它傳遞給客戶端,那麼您的ItemCollection中的items成員變量需要[DataMember]屬性。除此之外,我認爲這應該起作用 - 你會得到什麼錯誤?你的綁定配置是什麼?也許從您的服務配置文件發佈您的system.serviceModel部分? – kmp 2011-12-21 15:39:25