KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have an instance that implements IDictionary<T, K> , I don't know T and K at compiletime, and want to get all elements from it. I don't want to use IEnumerable for some reason, which would be the only non-generic interface implemented by IDictionary . Code I have so far: // getting types Type iDictType = instance.GetType().GetInterface("IDictionary`2"); Type keyType = iDictType.GetGenericArguments()[0]; Type valueType = iDictType.GetGenericArguments()[1]; // getting the keys IEnumerable keys = (IEnumerable)dictType.GetProperty("Keys") .GetValue(instance, null); foreach (object key in keys) { // ==> this does not work: calling the [] operator object value = dictType.GetProperty("Item") .GetValue(instance, new object[] {key } ); // getting the value from another instance with TryGet MethodInfo tryGetValue = iDictType.GetMethod("TryGetValue"); object[] arguments = new object[] { key, null }; bool hasElement = (bool)tryGetValue.Invoke(otherInstance, arguments); object anotherValue = arguments[1]; } I could also call TryGetValue, but I think it should be possible to call the [] operator. Can anybody help me?
Tags (comma-separated)
Save Edits
Cancel