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 object[] DecodeParameters(PSObject parametersPSObject, Type[] parameterTypes) { ArrayList baseObject = (ArrayList)parametersPSObject.BaseObject; List <object> objectList = new List <object>(); for (int index = 0; index < baseObject.Count; ++index) { object obj = baseObject[index] == null ? (object)null : RemoteHostEncoder.DecodeObject(baseObject[index], parameterTypes[index]); objectList.Add(obj); } return(objectList.ToArray()); }
private static object[] DecodeParameters(PSObject parametersPSObject, Type[] parameterTypes) { ArrayList baseObject = (ArrayList)parametersPSObject.BaseObject; List <object> list2 = new List <object>(); for (int i = 0; i < baseObject.Count; i++) { object item = (baseObject[i] == null) ? null : RemoteHostEncoder.DecodeObject(baseObject[i], parameterTypes[i]); list2.Add(item); } return(list2.ToArray()); }
/// <summary> /// Decode parameters. /// </summary> private static object[] DecodeParameters(PSObject parametersPSObject, Type[] parameterTypes) { // Extract the ArrayList and decode the parameters. ArrayList parameters = (ArrayList)parametersPSObject.BaseObject; List <object> decodedParameters = new List <object>(); Dbg.Assert(parameters.Count == parameterTypes.Length, "Expected parameters.Count == parameterTypes.Length"); for (int i = 0; i < parameters.Count; ++i) { object parameter = parameters[i] == null ? null : RemoteHostEncoder.DecodeObject(parameters[i], parameterTypes[i]); decodedParameters.Add(parameter); } return(decodedParameters.ToArray()); }
private static object DecodeClassOrStruct(PSObject psObject, Type type) { object uninitializedObject = FormatterServices.GetUninitializedObject(type); foreach (PSPropertyInfo property in psObject.Properties) { FieldInfo field = type.GetField(property.Name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (property.Value == null) { throw RemoteHostExceptions.NewDecodingFailedException(); } field.SetValue(uninitializedObject, RemoteHostEncoder.DecodeObject(property.Value, field.FieldType) ?? throw RemoteHostExceptions.NewDecodingFailedException()); } return(uninitializedObject); }
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); }