Krumelur
Krumelur

Reputation: 33058

System.Collections.ObjectModel.ObservableCollection only partially implemented in Monotouch?

I'm consuming WCF services using the Silverlight 3 stubs and one parameter I need is a System.Collections.ObjectModel.ObservableCollection. However the following code is throwing a NotImplementedException:

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

If I use a foreach loop to add all entries manually instead of using the constructor that takes an enumerable, it works. Is there a reason why the constructor is missing or was it just forgotten?

Upvotes: 1

Views: 446

Answers (1)

poupou
poupou

Reputation: 43553

Is there a reason why the constructor is missing or was it just forgotten?

This sometimes occurs on Mono base class library source code when someone implement a type but does not need everything inside it. In such cases it's better to add stubs for the missing code since this:

  • allow compilation of existing code;
  • it avoid MissingMethodException at runtime, a NotImplementedException is easier to diagnose;
  • allow Mono's tooling, e.g. MoMA and Gendarme, to report the NotImplementedException on existing .NET code.

In this specific case I suspect that more tests were needed to see if the items being copied needed to trigger events (whgen adding them) or not.

The good news is that this method is implemented in Mono's GIT master. I'll look into backporting this into mono-2-10 branch so MonoTouch will get it in future releases.

Upvotes: 1

Related Questions