Авто Свойство, которое возвращает интерфейс

2

Это любопытно, что я видел в своем коде сегодня.

Вот пример кода:

public class SomeClass
{
   public IUtils UtilitiesProperty { get; set; }
}

public interface IUtils
{
   void DoSomething();
}

public class Utils : IUtils
{
   void DoSomething();
}

Это компилируется отлично.

Итак, что такое UtilitiesProperty? Это Утилита? Что делать, если в IUTil реализовано несколько классов? Неужели это не скомпилирует?

Теги:
interface

2 ответа

13
Лучший ответ

Он не имеет значения, пока вы его не дадите (точнее, он имеет значение null). Если вы присвойте ему ссылку Utils, тогда да: это Utils, отображаемый через интерфейс IUtils. Вы можете дать только null или вещи, которые реализуют IUtils.

5

Это свойство, которое может содержать объект, реализующий ваш интерфейс IUtils. Больше классов может реализовать этот интерфейс, и использование интерфейса позволяет вам уровень абстракции (потребителю все равно, пока класс придерживается договора интерфейса).

Я бы посоветовал вам ознакомиться с использованием интерфейсов, абстрактных классов и т.п.

Например, Документы MSDN.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню