System.Collections.ObjectModel.ObservableCollection только частично реализован в Monotouch? - PullRequest
1 голос
/ 10 января 2012

Я использую службы WCF с использованием заглушек Silverlight 3, и мне нужен только один параметр - System.Collections.ObjectModel.ObservableCollection. Однако следующий код выдает NotImplementedException:

ItemType[] aItemTypes = ...;
ObservableCollection<ItemType> aTypes = null;
if(aItemTypes != null)
{
    aTypes = new ObservableCollection<ItemType> (aItemTypes);
}

Если я использую цикл foreach для добавления всех записей вручную вместо использования конструктора, который принимает перечислимое значение, это работает. Есть ли причина, по которой конструктор отсутствует или его просто забыли?

1 Ответ

1 голос
/ 10 января 2012

Есть ли причина, по которой конструктор отсутствует или его просто забыли?

Это иногда происходит в исходном коде библиотеки базовых классов Mono, когда кто-то реализует тип, но ему не нужно всевнутри него.В таких случаях лучше добавить заглушки для отсутствующего кода, так как:

  • позволяет компилировать существующий код;
  • позволяет избежать MissingMethodException во время выполнения,NotImplementedException легче диагностировать;
  • позволяет использовать инструменты Mono, например, MoMA и Жандарм , чтобы сообщить NotImplementedException о существующем коде .NET.

В этом конкретном случае я подозреваю, что необходимы дополнительные тесты, чтобы увидеть, нужны ли копируемые элементы для запуска событий (когда они добавляются) или нет.

Хорошая новость заключается в том, что этот методреализован в GIT-мастере Mono.Я посмотрю, как перенести это в ветку mono-2-10 , чтобы MonoTouch получал ее в будущих версиях.

...