我有一个消息接口:
public interface IMessage
{
int Id { get; set; }
string Body { get; set; }
string Title { get; set; }
Employee CreatedBy { get; set; }
MessageType MessageType { get; set; }
void Send(IEnumerable<User> recipients);
// or: void Send(User recipient);
}
每个实现都必须具有发送消息的Send方法,但根据方案,Send方法不同。即如果是私人消息,则只有一个收件人,并且还向该特定用户发送了另外的邮件通知,公共消息不会这样做。
参数可以是用户列表,也可以是单个用户。我该如何实现呢?
我知道我可以为私人消息制作一个1个用户的列表,但最好的情况是它是否像重载方法一样。
答案 0 :(得分:5)
只是重载方法 - 这在接口中也是有效的:
void Send(IEnumerable<User> recipients);
void Send(User recipient);
您需要在接口的实现者中实现两个重载。
答案 1 :(得分:1)
你也可以用params标记它
Send(IEnumerable<User> users)
{...}
void Send(params User[] recipients)
{
Send((IEnumerable<User>)recipients); // To IEnumerable overload
}
在这种情况下,您可以传入一个,多个或一组用户。