Signalr 信号枢纽<;T>;基本接口的实现支持
有一个场景,其中in希望有一个公共的基本接口,然后有派生接口,然后可以根据需要有默认的基本成员和派生成员。 代码如下所示Signalr 信号枢纽<;T>;基本接口的实现支持,signalr,signalr-hub,Signalr,Signalr Hub,有一个场景,其中in希望有一个公共的基本接口,然后有派生接口,然后可以根据需要有默认的基本成员和派生成员。 代码如下所示 public interface IBaseClient { Task MessageBroadCast(dynamic msg); } public interface IXXClient : IBaseClient { Task XXX(YYY msg); //Any Additional Client methods should
public interface IBaseClient
{
Task MessageBroadCast(dynamic msg);
}
public interface IXXClient : IBaseClient
{
Task XXX(YYY msg);
//Any Additional Client methods should go here
}
public abstract class BaseHub<T> : Hub<T> where T : class
{
public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
{
// Do any logic here
return base.OnDisconnected(stopCalled);
}
}
public class XXHub : BaseHub<IXXClient>
{
// Can Do a broadcast from here
// The below will work in a method and you see the MessageBroadCast with strongly typing
Clients.All.XXX(msg);
// Support for below is not present at least in the version I have or may be I'm missing something.
Clients.All.MessageBroadCast(msg);
}
公共接口IBaseClient
{
任务消息广播(动态消息);
}
公共接口IXXClient:IBaseClient
{
任务XXX(YYY消息);
//任何附加的客户端方法都应该在这里
}
公共抽象类BaseHub:Hub,其中T:class
{
公共覆盖System.Threading.Tasks.Task OnDisconnected(布尔停止调用)
{
//这里有什么逻辑吗
返回基.OnDisconnected(stopCalled);
}
}
公共类XXHub:BaseHub
{
//我可以在这里广播吗
//下面的将在一个方法中工作,您可以看到带有强类型的MessageBroadCast
Clients.All.XXX(msg);
//对以下内容的支持不存在,至少在我拥有的版本中不存在,或者可能是我遗漏了什么。
Clients.All.MessageBroadCast(msg);
}
问题或所需信息:在Signalr2.1内核中:获取一条错误消息,指出MessageBroadCast未提供IXXClient实现
signer在运行时创建类型时没有选择基本接口方法有什么具体原因吗。特定于GenerateInterface实现(ModuleBuilder ModuleBuilder)
如果从设计的角度来看这是有限制的,那么最好能够在基本接口中保留一些常见的操作。请建议
谢谢你的时间 这是信号器的
Hub
实现中的一个错误。正如您所发现的,不支持派生接口
基本接口方法没有被拾取的具体原因。这只是一个疏忽。我可以肯定地说,因为
同时,为了解决这个问题,您需要将所有客户端方法放在一个接口中。我知道这远远不够理想
您可以遵循。目前,没有为该错误指定里程碑。请随意对此问题发表评论,表明修复此错误对您很重要。这有助于进行分类