Open
Description
服务端:
HttpListener server = new HttpListener();
server.Prefixes.Add("http://localhost:10240/");
server.Start();
TypeManager.Register<ServiceVersion>("ServiceVersion");
Service service = new Service().Bind(server).AddInstanceMethods(new Hello(), "ty");
自定义类型:
public class ServiceVersion
{
public string Name;
public string Version;
public ServiceVersion()
{
Name = "blend";
Version = "1";
}
}
public class Hello:IHello
{
public string GetTargetVerByRef(ref ServiceVersion version)
{
version.Name = "hahah";
return version.Name;
}
}
public interface IHello
{
string GetTargetVerByRef(ref ServiceVersion version);
}
客户端:
using (Client httpCli = new Client("http://localhost:10240/"))
{
IHello hello = httpCli.UseService<IHello>("ty");
TypeManager.Register<ServiceVersion>("ServiceVersion");
ServiceVersion sv = new ServiceVersion();
var ret3 = hello.GetTargetVerByRef(ref sv);
}
异常:
异常信息:System.Exception:"类型"Commaon.ServiceVersion&"不能用作类型参数
异常堆栈:
在 Hprose.RPC.ClientCodec.Decode(MemoryStream response, ClientContext context)
在 Hprose.RPC.Client.<Call>d__50.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 Hprose.RPC.Client.<InvokeAsync>d__49`1.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 Hprose.RPC.Client.Invoke[T](String name, Object[] args, ClientContext context)
在 Hprose.RPC.SyncInvoker`1.Invoke(Object[] args)
在 $Proxy0.IHello.GetTargetVerByRef(ServiceVersion& )
在 HproseClient.Program.Main(String[] args) 位置 E:\20190910DY\MyDir\Winform\TestHPROSE\TestHprose\HproseClient\Program.cs:行号 50
分析:
问题应该出在服务端给参数类型解码的时候,但是我该如何解决这个问题呢?
Metadata
Metadata
Assignees
Labels
No labels