2014-11-16 2 views
3

Я учусь использовать рамки сущности (до сих пор я новичок в рамках сущности и C#),Создание объекта интерфейса в C#

при прохождении одного из учебников, я наткнулся на следующий кусок кода :

public class EntityF : IEntityWithChangeTracker,IEntityWithKey 
    { 
     private IEntityChangeTracker changetracker; 

     public void SetChangeTracker(IEntityChangeTracker changetracker) 
     { 
      this.changetracker = changetracker; 
     } 
    } 

Можем ли мы использовать ссылки еще один интерфейс в классе, как это ?:

private IEntityChangeTracker changetracker; 

И даже не реализованы методы, определенные в IEntityChangeTracker интерфейс.

Что может быть целью использования экземпляра интерфейса IEntityChangeTracker в примере здесь.

До сих пор (практикуя учебники по C#) я определял некоторые скелетные методы в интерфейсе, а класс, который наследует его, должен обеспечить реализацию для них. Это классический пример, но здесь здесь что-то другое. Кто-нибудь, пожалуйста, дайте мне знать цель определения таких интерфейсов?

+0

Вы можете показать объявление IEntityChangeTracker и IEntityWithKey. –

+0

Его системный интерфейс с использованием System.Data.Objects.DataClasses; – user2630764

ответ

4

Что может быть целью использования экземпляра интерфейса IEntityChangeTracker в примере здесь.

При принятии интерфейса вместо конкретной реализации вы создаете де-связь между обоими классами. Это означает, что вызывающий код может передавать любой объект, который реализует интерфейс, а не конкретный конкретный тип. Вы говорите, что к вызывающим «вы можете передать любой объект, реализующий интерфейс выше, я забочусь только о членах/методах, объявленных им»

Таким образом, вы также открываете дверь в Dependency Injection и позволяя клиент для поддержки Interface Segregation Principle

Смежные вопросы