2009-10-08 68 views
0

我使用的是ClientBase我自己的WCF代理,我想要做的財產以後像SVC UTIL的CT屬性,並告訴代理返回列表<>集合類型。手動從陣列改變ClientBase集合類型[]爲List <>

我不能使用列表<>因爲NHibernate的管理實體,所以我必須使用的IList

沒有與SvcUtil工具生成的代理....我寫我自己。

我該怎麼做?

+0

/ct:System.collections.Generic.List'1? – 2009-10-08 14:03:36

+0

而不SvcUtil工具 – 2009-10-08 14:37:34

+0

我不能使用列表<>因爲由NHibernate的管理實體,所以我不得不使用的IList。 < - 我不明白這部分。 NHibernate和你的WCF合同有什麼關係?你能澄清一下嗎? – 2009-10-08 14:40:18

回答

2

不幸的是,當在合同中聲明的類型是像IList的接口類型,有沒有辦法控制WCF實際上實例化什麼類型的(在實踐中,這將是一個數組)。

參見http://msdn.microsoft.com/en-us/library/aa347850.aspx

「在反序列化,當聲明的類型是一個接口,串行化引擎選擇實現所聲明的接口類型,類型被實例化的已知類型的機構(在數據中所述合同已知類型),在這裏有沒有影響; 類型的選擇被內置到WCF「。

+1

但也許嘗試與數據合同替代品?沒有想到這一點通過... – 2009-10-09 08:02:47

0

您應該能夠手動修復代理中的所有引用從'數組'到'列表' - 本質上只是一個繁瑣的查找和替換。

但是,如果由於某種原因,不工作,你可以只寫在你的代理類,翻譯的數組列表的包裝。無論如何,這可能更容易:

private object[] myProperty 
public List<object> MyProperty 
{ 
    get 
    { 
     return p.ToList(); 
    } 
    set 
    { 
     //initialise if necessary 
     p = value.ToArray(); 
    } 
} 
相關問題