Проблема была в регистрации приложения в Firebase. Требуется имя пакета и ключ SHA-1. Это я узнал, перехватив FirebaseException
в onVerificationFailed
callback, как предложил @Tamir Abutbul. Как только приложение было зарегистрировано, оно начало работать.
Кроме того, когда я попытался запустить приложение из другой среды Android Studio на другом Mac, проблема с регистрацией приложения снова возникла. На этот раз он сказал мне, что ключ SHA-1, который я ввел ранее, был не от этого Mac. Поэтому мне пришлось сгенерировать еще один ключ и добавить его (вы можете добавить несколько ключей).
Функцию называют ковариантностью/контравариантностью и будут поддерживать в c# 4.0. Можно читать об этом здесь: http://blogs.msdn.com/ericlippert/archive/tags/Covariance+and+Contravariance/default.aspx
Ответ JMD корректен. Для обходного решения можно попробовать это:
List<IPackable> orderItems = new List<IPackable>();
List<IShipMethod> shipMethods = GetForShipWeight(orderItems);
Или, если список должен быть со строгим контролем типов как OrderItems, то это (3.0 только, извините):
List<IShipMethod> shipMethods =
GetForShipWeight(orderItems.Cast<IPackable>().ToList());
JMD is half correct. In fact, it's absolutely incorrect to say that we will be able to cast a generic list with C# 4.0. It's true that covariance and contravariance will be supported in C# 4.0 but it will only works with interface and delegate and there will have a lot of constraints. Therefore, it won't work with List
.
The reason is really simple.
If B is a subclass of A, we cannot say that List
is a subclass of List
.
And here's why.
List
exposes some covariances methods (returning a value) and some contravariances methods (accepting a value as a parameter).
e.g.
If List
inherits from List
...than you would be able to do List.Add(A);
Therefore, you would loose all type safety of generics.