views:

263

answers:

1

I have an Interface that is defined something along these lines:

Interface foo
  {
  int someProperty {get; set;}
  Dictionary<string, object> Items;
  }

The concrete class that implements this interface needs to be registered for COM Interop. Everything compiles and the assemblies seem to register OK, but then when trying to create the COM object (e.g. from PowerShell) I get an error.

This seems to be related to the generic Dictionary<> class that I'm using. So here is the question:

  1. Is it even possible to expose generic collections through COM Interop?
  2. If yes, then how is it done?
  3. If no, then what's the workaround?
+2  A: 

I ended up here via a Google search and, ha ha, I should have guessed this would come from you.

As far as I know generics can't be marshalled through COM with the standard marshallers. What I do know is that an ArrayList in C# turns into a "standard" collection in COM, usable by VBScript, VB, JScript 5.x, etc. But since we're working toward a common goal, I'm going to play with some other aggregate types and see what happens.

Bob Denny