【发布时间】:2010-08-19 14:47:54
【问题描述】:
我在使用 WCF RIA 服务时遇到了一些问题,类似于this thread 中指定的问题。
我正在创建的域服务方法(查询方法)应该采用复杂的对象参数。 域服务方法示例:
public ComplexObjectResult GetComplexObject(ComplexObjectParameter test)
{
//do stuff
}
参数对象:
public class ComplexObjectParameter
{
[Key]
public decimal ID { get; set; }
... other fields
}
我收到此编译错误:域操作条目“GetComplexObject”的错误 70 参数“test”必须是预定义的可序列化类型之一。
在网上搜索后,我找到了this msdn thread。它指出这是 RIA 服务的限制,并且该线程没有指定合适的解决方法。
现在似乎有一些肮脏的解决方法:
将复杂参数更改为类型字符串并自行序列化/反序列化参数对象,我发现这是一个非常hacky的解决方案。
在域服务方法上使用 [Invoke] 标记并放弃所有 RIA 跟踪功能,为此我首先使用 RIA。
上述解决方案有没有缺点较少的替代方案?有人找到解决此问题的更优雅的解决方法了吗?
谢谢
【问题讨论】:
-
我选择了你的第二个选项 Stephane。我返回的复杂类型在客户端上是只读的,因此丢失跟踪功能对我来说不是问题。下次考虑将潜在的解决方案(甚至是肮脏的解决方案)放入答案中......我会投票给问题和答案!
标签: c# silverlight wcf .net-4.0 wcf-ria-services