我使用的是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