我在使用 WCF RIA 服务时遇到一些困难,类似于中指定的问题这个线程 https://stackoverflow.com/questions/2330085/cant-pass-collection-class-as-parameter-to-ria-services.
我正在创建的域服务方法(查询方法)应该采用复杂的对象参数。
域服务方法示例:
public ComplexObjectResult GetComplexObject(ComplexObjectParameter test)
{
//do stuff
}
参数对象:
public class ComplexObjectParameter
{
[Key]
public decimal ID { get; set; }
... other fields
}
我收到此编译错误:错误 70 域操作条目“GetComplexObject”的参数“test”必须是预定义的可序列化类型之一.
经过一番网上搜索后我发现这个 msdn 线程 http://forums.silverlight.net/forums/p/96425/302186.aspx。它指出这是 RIA 服务的限制,并且该线程没有指定合适的解决方法。
现在似乎有一些肮脏的解决方法:
对于上述解决方案,是否有缺点较少的替代方案?有人找到了解决这个问题的更优雅的方法吗?
Thanks
肮脏的解决方法三是使用 [Invoke] 属性并向域服务添加一个方法来公开“复杂类型”,该方法通知 WCF RIA 工具在客户端创建实体:
public ComplexObjectParameter ExposeComplexObjectParameter()
{
throw new NotSupportedException();
}
我将 NotSupportedException 放入域服务方法中,以防止远程调用该方法时出现静默故障。
我不确定此解决方案如何影响丢失“所有 RIA 跟踪功能”的问题。它没有回答如何使用复杂类型作为参数创建可组合查询。
它很脏,但抽象了最接近问题根源的问题。调用和接收代码更加清晰。这将“优雅”保持在较高的水平,同时将肮脏压低。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)