Skip to content

Ref传参报错 #70

Open
Open
@sunsunyang

Description

@sunsunyang

服务端:

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions