使用带有 System.Servicemodel.ClientBase<>.ChannelBase<> EndInvoke 的参数

Use out parameter with System.Servicemodel.ClientBase<>.ChannelBase<> EndInvoke

This is the official page of the method 我想我需要使用 'out' 参数作为参数。我有这样的方法:

bool GetInfo(out List<foo> bar);

如何在不更改我调用的方法的情况下使用输出参数?在这种情况下,我真的不想 return 一组 bool 和 List。

到目前为止,我试过这样使用它:

EndInvoke("GetInfo", new object[] { out bar }, ...);
EndInvoke("GetInfo", new object[] { bar }, ...);
EndInvoke("GetInfo", new object[] { }, ...);
EndInvoke("GetInfo", null, ...);
List<foo> bar = (List<foo>)EndInvoke("GetInfo", new object[] { bar }, ...);

但没有任何意义,对象数组中的输出栏显然根本不起作用。

显然你只是忽略了 out 参数。这是我目前的工作解决方案:

public bool GetInfo(out List<foo> bar) {
   bar = new List<foo>();
   object[] args = new object[] { bar };
   IAsyncResult result = BeginInvoke("GetInfo", args, null, null);
   EndInvoke("GetInfo", args, result);
   bar = (List<foo>)args[0];
   return true;
}

Invokes 调用使用问题中给出的接口行中的 GetInfo 方法。它们是使用相同名称的 2 个独立方法,因此如果有人看到此内容并认为它可以帮助他们,请不要被它混淆。