В дополнение к ответу Мохмада S , для реализации fetchPhotos
, кажется, что использование перечислений было бы более уместным, потому что в параметре completion
мы задаем как «результат ИЛИ ошибка». [117 ]
Вы можете реализовать что-то вроде:
enum CustomError: Error {
case notFound
}
enum Result {
case success(T)
case failure(CustomError)
}
protocol Switchable: Decodable { }
struct Video: Switchable { }
struct Photo: Switchable { }
Следовательно, fetchPhotos
как:
func fetchPhotos(url: String, completion: @escaping (Result<[Switchable]>) -> Void) {
// in case of error:
let error: CustomError? = CustomError.notFound
if let error = error {
completion(.failure(error))
}
// in case of success - videos:
completion(.success([Video(), Video()]))
// in case of success - photos:
completion(.success([Photo(), Photo()]))
}
Называя это как:
fetchPhotos(url: "...") { result in
switch result {
case .success(let photos):
// in case of photos
if let photos = photos as? [Photo] { /**/ }
// in case of videos
if let videos = photos as? [Video] { /**/ }
// in case of mix of photos and videos, you should iterate through it and check each object
photos.forEach({ photo in
if let media = photo as? Photo {
} else if let media = photo as? Video {
}
})
case .failure(let error):
print(error.localizedDescription)
}
}
The version of Dotfuscator Community Edition that will ship with Visual Studio 2010 will support obfuscation of both Silverlight 2 and Silverlight 3 assemblies.
http://code.google.com/p/babelobfuscator/ пока бесплатный и крутой :)
Я пока не видел хорошего и бесплатного обфускатора для Silverlight. Вот хороший обзор некоторых дешевых обфускаторов: http://www.olsonsoft.com/blogs/stefanolson/post/Selecting-an-obfuscator-for-Silverlight.aspx. The author choosed .NET Reactor as favorit obfuscator.
Я рад сообщить вам, что вам больше не нужно вручную исключать типы и члены из обфускации Сборки Silverlight. Фактически, вам вообще не нужно ничего исключать.
CodeFort - первый обфускатор, который ввел переименование XAML и BAML. Это означает, что ссылки на типы и члены внутри кода XAML и BAML будут обновляться синхронно с остальной частью обфускации - и при этом нет необходимости оставлять большие части кода незащищенными, как это делают сегодня все другие обфускаторы.
Если вы хотите убедиться в этом сами, скачайте бесплатную версию CodeFort с нашего веб-сайта: http://codefort.org/download
Надеюсь, это поможет,
Кристиан
codefort.org
PreEmptive Solutions находится на заключительном этапе бета-тестирования последней версии Dotfuscator, которая расширяет защиту за пределы сборки Silverlight и ресурсов XAML. (Такая поддержка уже работает для WPF / BAML). У этого есть три преимущества; Большая часть вашей сборки защищена, ваш XAML защищен, и вы экономите время, так как настройка теперь намного проще (больше никаких исключений).
Если вы хотите стать кандидатом на бета-тестирование, напишите мне (скрыто), и наша служба поддержки пришлет вам учетные данные. Имейте в виду, что это бета-версия, плата за нее не взимается, и у вас будет доступ к нашей поддержке, но вы не можете использовать эту версию для какой-либо производственной работы.
Единственными требованиями к программному обеспечению являются .NET 1.1 или выше и Silverlight 2 или выше. (Да - протестируйте это в Windows Mobile 7, Windows Azure, ...)
Еще несколько вещей, которые следует учитывать:
• Аналитика (отслеживание функций и использования) также может быть введена после компиляции
• Аналитика также поддерживает Expression Blend Silverlight Analytics Framework (позволяя одновременно выполнять веб-аналитику во время разработки и инструментарий после компиляции).
• Dotfuscator использует файлы XAP, а не сборки, и автоматически подписывает их заново, что значительно упрощает ваши сборки.
• Dotfuscator также является эффективным «обрезчиком», сокращающим ваши приложения Silverlight по пути…
Дополнительную информацию о нашей «универсальной поддержке Silverlight» см. В нашем объявлении TechEd по адресу http: //www.preemptive. com / news-events / press-Release / 307