我使用的是ClientBase我自己的WCF代理,我想要做的財產以後像SVC UTIL的CT屬性,並告訴代理返回列表<>集合類型。手動從陣列改變ClientBase集合類型[]爲List <>
我不能使用列表<>因爲NHibernate的管理實體,所以我必須使用的IList
沒有與SvcUtil工具生成的代理....我寫我自己。
我該怎麼做?
我使用的是ClientBase我自己的WCF代理,我想要做的財產以後像SVC UTIL的CT屬性,並告訴代理返回列表<>集合類型。手動從陣列改變ClientBase集合類型[]爲List <>
我不能使用列表<>因爲NHibernate的管理實體,所以我必須使用的IList
沒有與SvcUtil工具生成的代理....我寫我自己。
我該怎麼做?
不幸的是,當在合同中聲明的類型是像IList的接口類型,有沒有辦法控制WCF實際上實例化什麼類型的(在實踐中,這將是一個數組)。
參見http://msdn.microsoft.com/en-us/library/aa347850.aspx:
「在反序列化,當聲明的類型是一個接口,串行化引擎選擇實現所聲明的接口類型,類型被實例化的已知類型的機構(在數據中所述合同已知類型),在這裏有沒有影響; 類型的選擇被內置到WCF「。
但也許嘗試與數據合同替代品?沒有想到這一點通過... – 2009-10-09 08:02:47
您應該能夠手動修復代理中的所有引用從'數組'到'列表' - 本質上只是一個繁瑣的查找和替換。
但是,如果由於某種原因,不工作,你可以只寫在你的代理類,翻譯的數組列表的包裝。無論如何,這可能更容易:
private object[] myProperty
public List<object> MyProperty
{
get
{
return p.ToList();
}
set
{
//initialise if necessary
p = value.ToArray();
}
}
/ct:System.collections.Generic.List'1? – 2009-10-08 14:03:36
而不SvcUtil工具 – 2009-10-08 14:37:34
我不能使用列表<>因爲由NHibernate的管理實體,所以我不得不使用的IList。 < - 我不明白這部分。 NHibernate和你的WCF合同有什麼關係?你能澄清一下嗎? – 2009-10-08 14:40:18