private static IList DecodeCollection(PSObject psObject, Type collectionType) { Type genericArgument = collectionType.GetGenericArguments()[0]; ArrayList baseObject = RemoteHostEncoder.SafelyGetBaseObject <ArrayList>(psObject); IList instance = (IList)Activator.CreateInstance(collectionType); foreach (object obj in baseObject) { instance.Add(RemoteHostEncoder.DecodeObject(obj, genericArgument)); } return(instance); }
private static IDictionary DecodeDictionary(PSObject psObject, Type dictionaryType) { if (RemoteHostEncoder.IsObjectDictionaryType(dictionaryType)) { return(RemoteHostEncoder.DecodeObjectDictionary(psObject, dictionaryType)); } Type[] genericArguments = dictionaryType.GetGenericArguments(); Type type1 = genericArguments[0]; Type type2 = genericArguments[1]; Hashtable baseObject = RemoteHostEncoder.SafelyGetBaseObject <Hashtable>(psObject); IDictionary instance = (IDictionary)Activator.CreateInstance(dictionaryType); foreach (object key in (IEnumerable)baseObject.Keys) { instance.Add(RemoteHostEncoder.DecodeObject(key, type1), RemoteHostEncoder.DecodeObject(baseObject[key], type2)); } return(instance); }