小编Ste*_*ane的帖子

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.

是否有替代方案可以解决上述解决方案的缺点?是否有人为此问题找到了更优雅的解决方法?

谢谢

c# silverlight wcf .net-4.0 wcf-ria-services

12
推荐指数
1
解决办法
7966
查看次数

C#Object Initialiser - 对新实例的引用

我可以以某种方式获得对使用对象初始化器创建的实例的引用

var x = new TestClass
           {
                 Id = 1,
                 SomeProperty = SomeMethod(this)
           }
Run Code Online (Sandbox Code Playgroud)

"this"应该指向我正在创建的新TestClass实例.但它显然是指代码所在的类的实例.

我不是在问这是否是一个很好的方法.我知道我可以这样做:

var x = new TestClass {Id= x};
x.SomeProperty = SomeMethod(this);
Run Code Online (Sandbox Code Playgroud)

我有一个复杂的场景,在对象初始化器中引用新实例会使生活更轻松.

这有可能吗?

c# syntax object-initializers

3
推荐指数
1
解决办法
1076
查看次数