Почему «извлеченные интерфейсы» являются внутренними, а не общедоступными? - PullRequest
2 голосов
/ 11 июня 2010

Visual Studio включает функцию рефакторинга под названием «Извлечение интерфейса», которая генерирует интерфейс на основе реализации класса.

По умолчанию извлеченные интерфейсы являются внутренними. Проблема в том, что в итоге мы изменили почти все из них на Public.

Кто-нибудь знает, почему по умолчанию это Internal? А еще лучше, есть ли способ настроить это значение по умолчанию на Public?

Ответы [ 2 ]

0 голосов
/ 07 июля 2010

У меня нет ссылки, но у меня есть дикое предположение о том, почему она по умолчанию является внутренней.

Допустим, у вас есть 3 проекта / сборки: log4net (сторонний API), MyApp.Util и MyApp.Web (веб-проект).Веб-ссылки Util, который ссылается на log4net.Web не ссылается на log4net, и вы хотите сохранить его таким образом.

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

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

Делая интерфейс внутренним, Интернет может продолжать игнорировать log4net.

0 голосов
/ 11 июня 2010

Это может сработать, если вы измените шаблон Visual Studio для интерфейсов (я не пробовал, но предположил, что это должно работать).

Для Visual Studio 2008 шаблон хранится в

"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates
    \CSharp\Code\1033\Interface.zip"

Более подробно это описано в этом ответе .

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