вы можете использовать Кордова-плагин-белый список
<access origin="http://example/" /> //specify your domain
Они просто позволяют вам делать некоторые вещи, которые являются концептуально обоснованными, и формально приемлемо, но в настоящее время не разрешено из-за языковых ограничений. Например:
IEnumerable<int> ints = new List<int> { 1, 2, 3 };
Action<IEnumerable<object>> PrintThings =
x => { foreach(var thing in x) Console.WriteLine(thing); };
PrintThings(ints); // doesn't compile right now :( will compile in 4.0
Нет фундаментальной причины, почему это не может работать или не должно работать; это просто не допускается на языке. Разрешая это, вы облегчаете жизнь программистам, когда такая операция была бы естественной для них.
Существует множество заблуждений относительно того, как и что будет работать в 4.0. Лучшее объяснение, которое я прочитал до сих пор, было написано моим Марком Гравеллом. См. Его сообщение в блоге здесь:
http://marcgravell.blogspot.com/2009/02/what-c-40-covariance-doesn-do.html
Просто повторю, многие люди думают, что это будет работать в 4.0:
public class Base{}
public class Derived : Base {}
.. в каком-то другом классе
List<Derived> derived....
public void Method(List<Base> b){}
Даже в 4.0 вы не сможете передать List в этот метод. Как указывает Марк, для этого существуют общие ограничения, которые могут быть выполнены с версии 2.0
Одно из преимуществ, которое, на мой взгляд, ковариация очень поможет, это с Generics .
Я столкнулся с несколькими ситуациями где нужно явно использовать приведение
к для преобразования определенного типа в его базу.
class Foo { }
class Bar : Foo { }
// ...
IEnumerable<Foo> foos = new List<Foo>();
IEnumerable<Bar> bars = new List<Bar>();
foos = bars.Cast<Foo>();
// C# 4.0
foos = bars;
Вот хорошая ссылка на предмет.