我希望实施一个电子邮件库,该电子邮件库会发送包含To
,From
和Message
的基本SMTP电子邮件。我想创建一个Interface
,以便我可以切换处理发送邮件的电子邮件服务。
我的问题与创建界面有关。由于处理发送消息的具体类需要一些数据,如To
,From
和Message
,接口是否也应该具有这些属性呢?
在查看SO和其他文章中的其他示例时,似乎通常不会在Interface
中指定属性。那是为什么?
// Interface
public Interface ISendMail
{
string to {get; set;}
string from {get; set;}
string message {get; set;}
bool SendMessage();
}
而不是......
// Interface
public Interface ISendMail
{
bool SendMessage();
}
答案 0 :(得分:4)
答案 1 :(得分:2)
C#中的接口可以包含属性。从C# Language Specification的第1.9节(强调是我的):
接口定义了一个可以通过类和结构实现的契约。 接口可以包含方法,属性,事件和索引器。接口不提供它定义的成员的实现 - 它仅指定必须由实现接口的类或结构提供的成员。
答案 2 :(得分:0)
在界面中拥有属性是完全没问题的。我认为它们是方法(尽管应该是轻量级的)。 例如:
string Message { get; set; }
相当于声明这两种方法
string GetMessage();
void SetMessage(string value);
要添加,没有自动实现的属性,您仍需要为getter和setter提供相应的字段。