Интерфейсы и абстрактные классы являются очень сильной частью платформы .net.
Интерфейс - не что иное, как требование контракта для класса.То есть: интерфейс - это определенный набор методов и / или свойств, которые должен иметь класс, реализующий этот интерфейс.Интерфейс - это просто объявление контракта.
Абстрактный класс действительно мощный, потому что вы можете переносить логику в классы, реализующие этот абстрактный класс.Но это совсем другая игра с мячом.
Рассмотрим:
public interface ISlice
{
bool DoStuff(string someParameter);
}
public class MySpecificSliceOfType : ISlice
{
// this must have a method implementation for the [bool DoStuff(string)] method
public bool DoStuff(string mySpecificParameter)
{
// LOGIC in the Specific class
return(true);
}
}
public class MyOtherSliceOfType : ISlice
{
// this must have a method implementation for the [bool DoStuff(string)] method
public bool DoStuff(string myOtherParameter)
{
// LOGIC in the Other class
return(true);
}
}
Хотя это сильно упрощенный пример, объявляет реализацию интерфейса интерфейса ISlice как для классов "MySpecificSliceOfType", так и для классов.«MyOtherSliceOfType» означает, что необходимый метод DoStuff () не зависит от того, какой у вас есть, потому что вы можете делать такие вещи, как:
bool sliceReturn = ((ISlice)currentSlice).DoStuff(currentStringParameterValue);
Это может спасти вас от работы в таких вещах, как:
bool sliceReturn = false;
switch(typeofSlice)
{
case "other" :
sliceReturn = MyOtherSliceOfType.DoStuff(currentStrignParamterValue);
break;
case "specific" :
sliceReturn = MySpecificSliceOfType.DoStuff(currentStrignParamterValue);
break;
}
Суть, проиллюстрированная здесь, становится еще более сильной, если у вас> 2 разных типа.
И интерфейсы, и абстрактные классы прекрасно сочетаются с проверкой типа C #.
Интерфейсы являются фундаментальнымив Reflection ... что-то, что нужно использовать очень экономно, но недооценено, потому что это может сэкономить так много в определенных случаях ... и в сериализации (иначе как сериализация), которая действительно может помочь вам летать.