If you need shared methods or properties for implementation classes, you can use abstract class instead of interface. So, i provided an example below.
As you see, for interface example MessageText methods are shared for two implementations.
public interface IMessageSender
{
void SendMessage();
}
public class EmailSender : IMessageSender
{
public void SendMessage()
{
Console.WriteLine(MessageText());
}
private string MessageText()
{
return "Message to send !";
}
}
public class SmsSender : IMessageSender
{
public void SendMessage()
{
Console.WriteLine(MessageText());
}
private string MessageText()
{
return "Message to send !";
}
}
You can use abstract class for shared methods or properties like this;
public abstract class MessageSender
{
public abstract void SendMessage();
protected string MessageText()
{
return "Message to send !";
}
}
public class EmailSender : MessageSender
{
public override void SendMessage()
{
Console.WriteLine(MessageText());
}
}
public class SmsSender : MessageSender
{
public override void SendMessage()
{
Console.WriteLine(MessageText());
}
}