创建动态中心上下文
Create dynamic hub context
我有 2 个项目。
C#
两者都使用 Hubs/SignalR。
它们都有相同的方法,所以我在外部 DLL 中创建了一个共享抽象 class。
所以...
项目#1:
public class HubServerService : SharedHubService, IHostedService
{
public HubServerService(IHubContext<ServerUserHub> hubContext)
{
HubContext = hubContext;
}
}
项目#2:
public class HubServerService : SharedHubService, IHostedService
{
public HubServerService(IHubContext<ClientUserHub> hubContext)
{
HubContext = hubContext;
}
}
我的摘要class:
public abstract class SharedHubService
{
protected IHubContext<dynamic> HubContext;
}
这显然会引发 'dynamic' 的错误。我只是为了说明目的而放入它(并删除了所有焦点方法)。
我怎么能'overload'这个?
谢谢
注意:更改为拉娜提出的答案我得到这个:
如果我理解正确,你应该为你的 SharedHubService 使用模板
public class HubServerService : SharedHubService<ServerUserHub>, IHostedService
{
public HubServerService(IHubContext<ServerUserHub> hubContext)
{
HubContext = hubContext;
}
}
抽象 class 看起来像那样
public abstract class SharedHubService<T> where T : Microsoft.AspNetCore.SignalR.Hub
{
protected IHubContext<T> HubContext;
}
啊我看到你的问题了...
试试下面的代码:
public abstract class SharedHubService<THub> where THub : Hub
{
protected IHubContext<THub> HubContext;
}
public class ClientUserHub : Hub
{
}
public class HubServerService : SharedHubService<ClientUserHub>, IHostedService
{
public HubServerService(IHubContext<ClientUserHub> hubContext)
{
HubContext = hubContext;
}
public Task StartAsync(CancellationToken cancellationToken)
{
throw new System.NotImplementedException();
}
public Task StopAsync(CancellationToken cancellationToken)
{
throw new System.NotImplementedException();
}
}
我有 2 个项目。 C# 两者都使用 Hubs/SignalR。 它们都有相同的方法,所以我在外部 DLL 中创建了一个共享抽象 class。
所以...
项目#1:
public class HubServerService : SharedHubService, IHostedService
{
public HubServerService(IHubContext<ServerUserHub> hubContext)
{
HubContext = hubContext;
}
}
项目#2:
public class HubServerService : SharedHubService, IHostedService
{
public HubServerService(IHubContext<ClientUserHub> hubContext)
{
HubContext = hubContext;
}
}
我的摘要class:
public abstract class SharedHubService
{
protected IHubContext<dynamic> HubContext;
}
这显然会引发 'dynamic' 的错误。我只是为了说明目的而放入它(并删除了所有焦点方法)。
我怎么能'overload'这个?
谢谢
注意:更改为拉娜提出的答案我得到这个:
如果我理解正确,你应该为你的 SharedHubService 使用模板
public class HubServerService : SharedHubService<ServerUserHub>, IHostedService
{
public HubServerService(IHubContext<ServerUserHub> hubContext)
{
HubContext = hubContext;
}
}
抽象 class 看起来像那样
public abstract class SharedHubService<T> where T : Microsoft.AspNetCore.SignalR.Hub
{
protected IHubContext<T> HubContext;
}
啊我看到你的问题了...
试试下面的代码:
public abstract class SharedHubService<THub> where THub : Hub
{
protected IHubContext<THub> HubContext;
}
public class ClientUserHub : Hub
{
}
public class HubServerService : SharedHubService<ClientUserHub>, IHostedService
{
public HubServerService(IHubContext<ClientUserHub> hubContext)
{
HubContext = hubContext;
}
public Task StartAsync(CancellationToken cancellationToken)
{
throw new System.NotImplementedException();
}
public Task StopAsync(CancellationToken cancellationToken)
{
throw new System.NotImplementedException();
}
}