Частичный интерфейс в C#



позволяет ли C# частичный интерфейс? то есть, в ManagerFactory1.cs класс, у меня есть



public partial interface IManagerFactory
{
// Get Methods
ITescoManager GetTescoManager();
ITescoManager GetTescoManager(INHibernateSession session);
}


и в ManagerFactory.класс cs, у меня есть:



public partial interface IManagerFactory
{
// Get Methods
IEmployeeManager GetEmployeeManager();
IEmployeeManager GetEmployeeManager(INHibernateSession session);
IProductManager GetProductManager();
IProductManager GetProductManager(INHibernateSession session);
IStoreManager GetStoreManager();
IStoreManager GetStoreManager(INHibernateSession session);
}


и ManagerFactory и ManagerFactory1 расположены в одной сборке.

324   9  
c#

9 ответов:

самый простой способ-просто попробовать :)

Но да, частичные интерфейсы разрешены.

подходящие места для partial модификатор (с ссылками на спецификации C# 3.0):

  • классы (10.1.2)
  • структуры (11.1.2)
  • интерфейсы (13.1.2)
  • Методы (C# 3.0+) (10.2.7; 10.6.8)

раздел 10.2 спецификации содержит большинство общих сведений для частичных типов.

недействительным локации:

  • метки
  • представители

Это так, но важный вопрос будет почему?

частичные классы существуют, так что вы можете расширить автоматически сгенерированный код. VS может генерировать файл формы, или код позади, или LINQ to SQL accessor, и вы можете расширить его с помощью частичного.

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

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

Да, это делает.

разделяемые классы и методы (руководство по программированию в C#) в MSDN

ограничения:

  • все определения интерфейса частичного типа, предназначенные для частей одного типа, должны быть изменены с помощью partial
  • частичный модификатор может появиться только непосредственно перед ключевым словом interface.
  • все определения частичных типов, предназначенные для частей одного типа, должны быть определены в одной сборке и тот же модуль (.exe или .DLL-файл.)

частичные intefaces используются в основном при создании кода. Например, когда одна часть интерфейса генерируется, а другая написана пользователем.

да это.

подумайте дважды, прежде чем сделать свой интерфейс частично. Может быть, лучше разделить его на два itnerfaces?

держите свои интерфейсы маленькими и сосредоточенными. частичный-это кодовый запах.

хорошо.

Я согласен, что это может быть запах, но я все еще могу придумать одну причину, чтобы сделать это.

в настоящее время я работаю над приложением MVVM framework для WPF и Silverlight. Я столкнулся с тем, что WPF и Silverlight настолько различны, что вместо использования определений по всему коду частичный интерфейс/класс может фактически разделить различия между двумя фреймворками и по-прежнему поддерживать код чистым и почти единственным источником.

коротко и просто: да!

Да, это делает. Определены ли оба частичных интерфейса в одном пространстве имен?

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

Comments

    Ничего не найдено.