2009-10-08 63 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(); 
    } 
} 
相关问题