Для пользователей ПК:
Шаг 1:
Вы должны включить опции разработчика в своем телефоне Android.
Вы можете включить опции разработчика, используя этот способ.
• Откройте «Настройки»> «О программе»> «Информация о программном обеспечении»> «Еще».
• Затем нажмите «Номер сборки» семь раз, чтобы включить параметры разработчика.
• Вернитесь в меню «Настройки», и теперь вы сможете увидеть «Опции разработчика» там.
• Коснитесь его и включите USB-отладку из меню на следующем экране.
Шаг 2:
Откройте cmd и введите adb.
если вы обнаружите, что adb является недопустимой командой, вам нужно добавить путь к переменной среды.
• Сначала перейдите к папке с установленным SDK
Следуйте по этому пути, и этот путь только для примера. D: \ программное обеспечение \ Development \ Andoird \ SDK \ SDK \ платформенные инструменты \; D: \ softwares \ Development \ Andoird \ SDK \ sdk \ tools;
• Теперь поиск в расширенной настройке системы Windows
Откройте переменную окружения.
, затем откройте путь и вставьте следующий путь, это пример.
Ваш путь SDK отличается от моего, пожалуйста, используйте ваш. D: \ softwares \ Development \ Andoird \ SDK \ sdk \ platform-tools \;
D: \ softwares \ Development \ Andoird \ SDK \ sdk \ tools;
Шаг 3:
Откройте cmd и введите adb. если вы по-прежнему видите, что команда adb является недопустимой, значит, ваш путь не установлен должным образом, выполните указанные выше шаги.
Теперь вы можете подключить ваш телефон к ПК.
Откройте cmd и введите adb devices, и вы увидите свое устройство. Найдите свой IP-адрес телефона.
Тип: - adb tcpip 5555
] Получить IP-адрес вашего телефона
adb shell netcfg
Теперь,
adb connect "IP address of your phone"
Теперь запустите ваш проект Android и, если вы не видите свое устройство, введите снова adb connect IP address вашего телефона
Для пользователей Linux и MAC :
Шаг 1: откройте терминал и установите adb, используя
Подключите телефон через USB кабель к ПК. Введите следующую команду в терминале
adb tcpip 5555
Используя adb, подключите свой IP-адрес телефона Android.
Уберите свой телефон.
Компилятор не может принудительно применить это. Вы можете написать свой собственный плагин анализа для Gendarme или FxCop , чтобы обеспечить соблюдение таких требований.
Я предполагаю, что вам действительно не нужны ВСЕ производные классы для реализации абстрактного метода, но это определенно звучит так, как будто у вас есть немного запаха кода в вашем дизайне.
Если вы не имеют какой-либо функциональности в методе Concrete.Clone (), тогда вы также можете сделать свой класс Concrete абстрактным (только не забудьте изменить имя ;-). Оставьте любую ссылку на метод Clone ().
abstract class Base { protected abstract void Clone(); }
abstract class Concrete : Base { }
class Custom : Concrete { protected override void Clone() { /* do something */ } }
Если у вас есть некоторые базовые функции в методе Concrete.Clone (), но вам нужна подробная информация с более высокого уровня, тогда разбейте ее на собственный абстрактный метод или принудительное использование свойств реализация более высокого уровня для предоставления этой информации.
abstract class Base { protected abstract void Clone(); }
abstract class ConcreteForDatabases : Base
{
protected abstract string CopyInsertStatemement {get;}
protected override void Clone()
{
// setup db connection & command objects
string sql = CopyInsertStatemement;
// process the statement
// clean up db objects
}
}
class CustomBusinessThingy : ConcreteForDatabases
{
protected override string CopyInsertStatemement {get{return "insert myTable(...) select ... from myTable where ...";}}
}
You will have to make Concrete
an abstract class to enforce that.
You can check this at run-time using reflection and throw an exception to disrupt execution, wrecking havoc for "impolite" users of your library. Performance-wise that is not very wise, even though you could store a static HashSet
I think your best bet is to provide clear documentation that tells any user of your code that it is deemed necessary to override the Clone() method.