-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ArgumentException: Could not cast or convert from System.String to System.Type. #18
Comments
你好,请确认一下你所安装的 HandyIpc 的版本,是否与下方相同? <PackageReference Include="HandyIpc" Version="0.5.2" />
<PackageReference Include="HandyIpc.NamedPipe" Version="0.5.0" />
<PackageReference Include="HandyIpc.Serializer.Json" Version="0.5.0" /> 我对你提供的 Demo 进行了测试,在该版本下,不可复现此问题。 这是我的最小复现 Demo: |
这不是推荐做法,因为共用相同的合同接口,才能做到统一管理,你在两边分别复制了一份接口,这在 C# 中实际上算两个不同的类型,当你修改了其中一个接口,导致其与另一个接口匹配不上时,将无法得到编译错误的提示,有潜在的维护隐患。 但具体到这个问题,其实有办法正常使用(不推荐)。出现这个问题的原因是:两个程序集中的 但是框架提供了自定义这个标识符的功能,你可以手动覆盖默认的标识符。只需要确保服务端和客户端的 // 在服务端注册这个接口时:
builder.Register<IDriver222, Driver>("unique-key");
// 在客户端获取这个接口时:
var driver = client.Resolve<IDriver>("unique-key"); |
谢谢你的耐心解答。非常感谢 💯 |
对了,顺便问一下,如果 server 没有运行的话, client 起来后调用会卡住不动,还不知道如何退出, 有没有办法检测server是否运行了? |
框架目前没有支持,但可以使用 Mutex、 EventWaitHandle 等确保进程单例的方法来检查服务进程是否已启动,理论上服务器的进程是要确保单例的,否则,无法保证消息被发往哪个进程处理。 |
The text was updated successfully, but these errors were encountered: