2016-12-14 2 views

ответ

0

Нет, просматривать модели в призме не нужно, чтобы реализовать какой-либо интерфейс. Даже не INotifyPropertyChanged, если у вас нет данных, которые меняются с логической стороны, а не из представления.

В более старых версиях была IView которых мнения пришлось реализовать использовать ViewModelLocator, но больше не существует.

Определения модулей должны быть реализованы IModule.

EDIT после комментариев:

Вы хотите создать интерфейс для одного класса, если вы хотите, чтобы иметь возможность заменить его другим классом, либо в производстве или в тесте.

Это, как говорится, не создает интерфейс для класса, как правило, но наоборот. Интерфейс на первом месте и указывает, что потребитель хочет сделать с реализацией, а затем один или несколько классов обеспечивают реализацию для одного или нескольких интерфейсов каждый.

Пример:

Учитывая класс

internal class InventoryManager 
{ 
    public IEnumerable<string> ListItems() { ... } 

    public void AddItem(string item) { ... } 

    public void RemoveItem(string item) { ... } 
} 

не создавать этот интерфейс:

public interface IInventoryManager 
{ 
    IEnumerable<string> ListItems(); 

    void AddItem(string item); 

    void RemoveItem(string item); 
} 

, а скорее эти два:

public interface IItemList 
{ 
    IEnumerable<string> ListItems(); 
} 

public interface IItemStorage 
{ 
    void AddItem(string item); 

    void RemoveItem(string item); 
} 

, потому что ваши интерфейса потреблять rs, вероятно, либо захочет посмотреть, что находится в инвентаре, либо изменить его. И вы хотите, чтобы вариант инвентаризации только для чтения отличался от записываемого.

+0

Спасибо за ваш ответ, – Rudra

+0

Да Viewmodel наследует класс viewmodelbase, который реализует интерфейс INotifyPropertyChanged. А для реализации модуля в призме мы должны реализовать I модуль. Мой главный вопрос: если не существует более одного класса, который может реализовать тот же интерфейс. В этом случае полезно создавать интерфейс только для одного класса. Если мы не делаем то же самое, мы теряем слабо связанную концепцию. – Rudra

+0

Я не понимаю. У вас может быть неограниченное количество классов, реализующих один интерфейс, но у вас также может быть только один. В большинстве случаев у вас есть как минимум два: один в производственном коде и один в модульных тестах. – Haukinger