我尝试使用具有属性的自定义客户端,但收到异常消息,如“客户端类型不得包含属性”。为什么这样?一切都可以在没有属性的情况下运行。
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"
}
}
我必须将我的属性拆分到一个单独的接口,然后在我的具体客户端类中继承这两个接口。这有一个额外的好处,您可以通过依赖注入使用这些属性,它们将来自您的实现。
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);
}
}