SignalR 自定义客户端不适用于这些属性

问题描述 投票:0回答:1

我尝试使用具有属性的自定义客户端,但收到异常消息,如“客户端类型不得包含属性”。为什么这样?一切都可以在没有属性的情况下运行。

public interface IClient 
{
    string Vote { get; set; } //does not work with properties
    Task ReceiveMessage(string method, string user, string message);
}
public class ChatHub : Hub<IClient>
{
   public async Task SendMessage(string user, string message)
   {
       await Clients.All.ReceiveMessage("ReceiveMessage", user, message); //here I can't send messages because of the "Voice" property of the interface "IClient"
   }
}
asp.net-core signalr
1个回答
0
投票

我必须将我的属性拆分到一个单独的接口,然后在我的具体客户端类中继承这两个接口。这有一个额外的好处,您可以通过依赖注入使用这些属性,它们将来自您的实现。

public interface IClient 
{
    Task ReceiveMessage(string method, string user, string message);
}

public interface IClientProperties
{
    string Vote { get; set; }
}

public class ChatClient : IClient, IClientProperties
{
    public string Vote { get; set; }
    public Task ReceiveMessage(string method, string user, string message)
    {
        // Implementation
    }
}

public class ChatHub : Hub<IClient>
{
   public async Task SendMessage(string user, string message)
   {
       await Clients.All.ReceiveMessage("ReceiveMessage", user, message); 
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.