I did a test, a very small application console, I've created the proxy and made a classical call (http).
not just complex datatype (needs to be serialized) but even the basic ones, ...such as strings, etc. .....
<div class="code">
Script s1 = Script.Compile(@<span class="String">"<br />
& nbsp; ver = PX.GetVersion(out err); <br />
& nbsp; return ver;<br />
& nbsp; "</span>);<br />
& nbsp; s1.Context.SetItem(<span class="String">"PX"</span>, myProxy);<br />
& nbsp; s1.Context.SetItem(<span class="String">"err"</span>, err);<br />
& nbsp; s1.Context.SetItem(<span class="String">"ver"</span>, stringVersion);<br />
& nbsp; s1.Execute();<br />
< br />
< br />
< br />
[ServiceContract(Namespace = @<span class="String">"
http://www.mynamespace.it"</span>)]<br />
& nbsp; <span class="Modifier">public</span> <span class="ReferenceType">interface</span> IContract <br />
& nbsp; {<br />
& nbsp; [OperationContract]<br />
& nbsp; <span class="ReferenceType">string</span> GetVersion(<span class="MethodParameter">out</span> <span class="ReferenceType">string</span> err);<br />
....
< /div>