.NET бросая универсальный список

Проблема была в регистрации приложения в Firebase. Требуется имя пакета и ключ SHA-1. Это я узнал, перехватив FirebaseException в onVerificationFailed callback, как предложил @Tamir Abutbul. Как только приложение было зарегистрировано, оно начало работать.

Кроме того, когда я попытался запустить приложение из другой среды Android Studio на другом Mac, проблема с регистрацией приложения снова возникла. На этот раз он сказал мне, что ключ SHA-1, который я ввел ранее, был не от этого Mac. Поэтому мне пришлось сгенерировать еще один ключ и добавить его (вы можете добавить несколько ключей).

6
задан Michał Powaga 20 December 2011 в 07:08
поделиться

3 ответа

Функцию называют ковариантностью/контравариантностью и будут поддерживать в c# 4.0. Можно читать об этом здесь: http://blogs.msdn.com/ericlippert/archive/tags/Covariance+and+Contravariance/default.aspx

11
ответ дан 8 December 2019 в 02:27
поделиться

Ответ JMD корректен. Для обходного решения можно попробовать это:

List<IPackable> orderItems = new List<IPackable>();
List<IShipMethod> shipMethods = GetForShipWeight(orderItems);

Или, если список должен быть со строгим контролем типов как OrderItems, то это (3.0 только, извините):

List<IShipMethod> shipMethods =
    GetForShipWeight(orderItems.Cast<IPackable>().ToList());
7
ответ дан 8 December 2019 в 02:27
поделиться

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.

14
ответ дан 8 December 2019 в 02:27
поделиться
Другие вопросы по тегам:

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