Почему вызов ISet .Contains () компилируется, но выдает исключение во время выполнения?

Пожалуйста, помогите мне объяснить следующее поведение:

dynamic d = 1;
ISet<dynamic> s = new HashSet<dynamic>();
s.Contains(d);

Код компилируется без ошибок / предупреждений, но в последней строке я получаю сообщение следующее исключение:

Unhandled Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.Collections.Generic.ISet<object>' does not contain a definition for 'Contains'
   at CallSite.Target(Closure , CallSite , ISet`1 , Object )
   at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1)
   at FormulaToSimulation.Program.Main(String[] args) in 

Насколько я могу судить, это связано с разрешением динамической перегрузки, но странные вещи:

(1) Если тип s - HashSet , нет возникает исключение.

(2) Если я использую неуниверсальный интерфейс с методом, принимающим динамический аргумент, исключение не возникает.

Таким образом, похоже, что эта проблема связана, в частности, с универсальными интерфейсами, но я не мог выяснить, что именно вызывает проблему.

Это ошибка в компиляторе / системе типов, Мне нужна навигация без пункта назначения. я пробовал с Intent i = new Intent (Intent.ACTION_VIEW, Uri.parse ("google.navigation: q =")); ...

Я много часов пытался запустить навигацию из моего приложения. Мне нужна навигация без пункта назначения.

Я пробовал использовать

        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q="));
        startActivity(i);

Это запускает навигацию, но пункт назначения не найден

Я тоже пытался запустить processName, packageName с startIntent с помощью com.google.android.apps.maps , com.google.android.apps.maps: проездной и ** com.google.android.maps.driveabout.app.DestinationActivity

тоже безуспешно: /

идея?

5
задан Pachanka 12 September 2010 в 18:44
поделиться