【问题标题】:WCF and ref parametersWCF 和 ref 参数
【发布时间】:2013-02-18 20:37:35
【问题描述】:

我在使用 WCF 并将参数作为 ref 传递时遇到了奇怪的问题。

假设我有一个班级:

Class MyClass 
{
     public string str;
}

还有这样的代码块:

List<MyClass> c = new List<MyClass>();
c.Add(new MyClass());
MyClass c2 = c[0];

如果我随后调用应该更新该类的 str 属性的 WCF 方法:

WCFService.UpdateStr(ref c2);

c[0] 和 c2 是不同的——它们不应该在 str-property 中包含相同的字符串吗!? WCF by ref 函数参数有什么问题吗?

【问题讨论】:

  • MyClass.str 上是否有 [DataMember] 属性?

标签: c# wcf


【解决方案1】:

不,他们不应该。通过引用传递的参数意味着可以更改对象本身,并且在 WCF 调用的情况下,它是。当对UpdateStr 的调用返回时,c2 引用了不同的对象实例。

下图显示了此场景的情况。

【讨论】:

  • 感谢您提供的非常说明性的图片!在设计 WCF 应用程序时绝对应该考虑到这一点!
  • 这不仅限于 WCF。任何参数标有ref 的方法都可以更改对象引用(我只是碰巧知道 WCF always 会这样做)。在设计任何调用带有ref 参数的方法的代码时,应考虑到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 2011-07-26
  • 2012-08-08
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多