Ste*_*ane 12 c# silverlight wcf .net-4.0 wcf-ria-services
我遇到了一些与此线程中指定的问题类似的WCF RIA服务的困难.
我正在创建的域服务方法(Query方法)应该采用复杂的对象参数.示例域服务方法:
public ComplexObjectResult GetComplexObject(ComplexObjectParameter test)
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
参数对象:
public class ComplexObjectParameter
{
[Key]
public decimal ID { get; set; }
... other fields
}
Run Code Online (Sandbox Code Playgroud)
我得到此编译错误:错误70域操作条目'GetComplexObject'的参数'test'必须是预定义的可序列化类型之一.
在网上搜索了一下后,我发现了这个msdn线程.它声明这是RIA服务的限制,并且该线程没有指定任何体面的解决方法.
现在似乎有一些肮脏的解决方法:
更改复杂参数以键入字符串和序列化/反序列化参数对象我自己,我发现一个非常hacky解决方案.
在域服务方法上使用[Invoke]标签并放弃所有RIA跟踪功能,我首先使用RIA.
是否有替代方案可以解决上述解决方案的缺点?是否有人为此问题找到了更优雅的解决方法?
谢谢
脏的解决方法三,是使用[Invoke]属性并向域服务添加一个方法来公开"复杂类型",它通知WCF RIA工具在客户端创建实体:
public ComplexObjectParameter ExposeComplexObjectParameter()
{
throw new NotSupportedException();
}
Run Code Online (Sandbox Code Playgroud)
我在我的域服务方法中放置了NotSupportedException,以防止在远程调用该方法时出现静默失败.
我不确定这个解决方案如何影响失去"所有RIA跟踪功能"的问题.它没有回答如何使用复杂类型作为参数创建可组合查询.
它很脏,但抽象出最接近问题根源的问题.呼叫和接收代码更清晰.这样可以保持较高水平的"优雅",同时推动脏污.
| 归档时间: |
|
| 查看次数: |
7966 次 |
| 最近记录: |