如何使用IEnumerable <user>或仅用户</user>的方法定义接口

时间:2012-02-14 21:41:38

标签: c# oop interface

我有一个消息接口:

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个用户的列表,但最好的情况是它是否像重载方法一样。

2 个答案:

答案 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
}

在这种情况下,您可以传入一个,多个或一组用户。