У меня была похожая проблема. Решением было сначала вызвать FirebaseApp.configure()
:
FirebaseApp.configure()
Messaging.messaging().delegate = self
вместо:
Messaging.messaging().delegate = self // this brakes FCM
FirebaseApp.configure()
Из здесь (лучше не могу сказать):
CStr - ключевое слово, а ToString - функция (метод). CStr скомпилирован встроенный и создает код в зависимости от от типа переданного объекта. Это в основном там для людей, привыкших это из предыдущих версий VB. я больше не использовал CStr в .Net (потому что не совсем понятно, что он делает в каких ситуациях и это тоже не очень хорошо документированы).
Разница зависит от того, какой Функция ToString, которую вы используете. Каждый тип может иметь свою собственную реализацию.
CStr (объект) является приведением (эквивалентным (строковому) объекту в C #) и выбрасывает esxception, если задан нулевой объект или объект, который не может быть преобразованным в строку. Однако .ToString () будет работать с любым типом объекта (поскольку он реализован в классе Object) и, если он не переопределен текущим классом, вернет базовый метод ToString (). В вашем случае вы должны переопределить метод ToString () в своем классе ID_TYPE и вернуть нужную строку.
Это две совершенно разные вещи. CStr - это перегруженная функция, которая преобразует данные определенных типов в строку, а ToString вызывает метод, который есть у всех объектов .net и который вы можете переопределить, но который по умолчанию содержит название объекта. ToString вернет данные типа, только если он был переопределен для этого.
Для удобства чтения, если бы мне нужно было писать код на VB.NET (я программист на C #), я бы по возможности избегал конкретных ключевых слов / функций VB. Используя только классы и методы .NET, ваш код будет более понятным для людей, привыкших к разработке на других языках .NET. Не говоря уже о том, что эти функции предназначены в основном для совместимости с VB6, и они выглядят немного неуместно по сравнению с .NET.
Конечно, могут быть разумные исключения, иногда VB.NET действительно очень упрощает выполнять определенные задачи, и может быть удобно этим воспользоваться; но, как правило, я бы не стал использовать какие-либо специфические функции VB.NET.