MATLAB Answers

0

Matlab Read a System.Col​lections.G​eneric.Dic​tionary from c# dll

Asked by Maria Isabel on 13 Jan 2013
Latest activity Commented on by Radhakrishnan on 26 Oct 2018
I have a Matlab application and I receive from a c# dll (NET Assembly) a
System.Collections.Generic.Dictionary*KeyCollection<System*String,System*Collections*Generic*List<System*Double>>
I would like to fill a containers.map with the received info: Keys/ Values
How can I read this kind of Collection in Matlab?
Thank u for support

  2 Comments

If you use methods(dictObj) you will see that the dictObject supports the .Item() and other methods.
Add GetObjectData
Clear GetType
ContainsKey Item
ContainsValue OnDeserialization
Dictionary<System*String,System*Object> Remove
Equals ToString
GetEnumerator TryGetValue
GetHashCode
Any Idea how to create the above collection in Matlab? I tried the following but none is working ; c1,c2,c3 are failing
DoubleListType = NET.GenericClass('System.Collections.Generic.List','System.Double'); DictType = NET.GenericClass('System.Collections.Generic.Dictionary','System.String',{DoubleListType}); c3 = NET.createGeneric('System.Collections.Generic.Dictionary','System.String',NET.GenericClass('System.Collections.Generic.List','System.Double'));
c2 = NET.createGeneric({DictType}); c1 = NET.createGeneric('System.Collections.Generic.Dictionary','System.String',{DoubleListType});

Sign in to comment.

1 Answer

Answer by Darren Aklestad on 31 May 2013

I was able to do this by the following:
keys = dic.Keys;
keys_enum = keys.GetEnumerator;
len = dic.Count;
key_list = cell(len,1);
cnt = 0;
stat = 1;
while stat
stat = key_enum.MoveNext;
if stat
key_val = key_enum.Current;
if ~isempty(key_val)
key_list(cnt) = char(key_val);
end
end
end
You then have the keys and you can use the keys to access the dictionary items

  0 Comments

Sign in to comment.