AnkhSVN, не Распознающий мое Решение, как являющееся в Управлении исходным кодом

Ответить "почему" часть вопроса относительно того, почему не List<T>, причины соответствуют требованиям завтрашнего дня и простота API.

Соответствующий требованиям завтрашнего дня

List<T> не разработан, чтобы быть легко расширяемым путем разделения на подклассы его; это разработано, чтобы быть быстрым для внутренних реализаций. Вы заметите, что методы на нем не являются виртуальными и так не могут быть переопределены, и нет никаких рычагов в Add / Insert / Remove операции.

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

Так путем возврата или класса, который может быть легко разделен такой на подклассы как Collection<T> или интерфейс такой как IList<T>, ICollection<T> или IEnumerable<T>, можно изменить внутреннюю реализацию, чтобы быть различным типом набора для удовлетворения потребностей, не повреждая код потребителей, потому что это может все еще быть возвращено как тип, который они ожидают.

Простота API

List<T> содержит много полезных операций такой как [1 110], Sort и так далее. Однако, если это - набор, Вы представляете тогда, вероятно, что Вы управляете семантикой списка, а не потребителями. Таким образом, в то время как Вашему классу внутренне, возможно, понадобятся эти операции, очень маловероятно, что потребители Вашего класса хотели бы к (или даже должен) называть их.

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

7
задан Neil N 31 July 2009 в 21:08
поделиться

3 ответа

У меня была та же проблема, обычно это решает ее:

Щелкните правой кнопкой мыши узел решения в обозревателе решений. В контекстном меню выберите Subversion ... Обновить статус.

Или, как указывает Стефан, просто используйте панель инструментов Ankh в Visual Studio.

0
ответ дан 6 December 2019 в 07:27
поделиться

Скорее всего, AnkhSVN еще не загружен. Перейдите в Инструменты - Параметры - Управление исходным кодом и выберите AnkhSVN в качестве активного поставщика SCC. Затем перейдите в File - Subversion - Change Source Control и подключите / привяжите решение. Это приводит к загрузке Ankh в следующий раз, когда вы откроете решение путем аннотирования файла sln. Другие люди, проверяющие тот же файл sln, также извлекают выгоду из этого, потому что Ankh загружается напрямую.

22
ответ дан 6 December 2019 в 07:27
поделиться

У меня эта проблема возникала из-за того, что SVN был обновлен, а ankhSVN не поддерживал этот тип. Я исправил это, откатив обновление SVN или установив последнюю версию ankhSVN, которая иногда бывает бета-версией.

2
ответ дан 6 December 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: