internal void StreamedParameterCallback(OperationCallbackProcessingContext callbackProcessingContext, OperationHandle operationHandle, string parameterName, object parameterValue, MiType parameterType) { parameterValue = CimInstance.ConvertFromNativeLayer(parameterValue, null, null, !this._shortenLifetimeOfResults); CimInstance cimInstance = parameterValue as CimInstance; if (cimInstance != null) { cimInstance.SetCimSessionComputerName(this._CimSessionComputerName); cimInstance.SetCimSessionInstanceId(this._CimSessionInstanceID); } CimInstance[] cimInstanceArray = parameterValue as CimInstance[]; if (cimInstanceArray != null) { CimInstance[] cimInstanceArray1 = cimInstanceArray; for (int i = 0; i < (int)cimInstanceArray1.Length; i++) { CimInstance cimInstance1 = cimInstanceArray1[i]; if (cimInstance1 != null) { cimInstance1.SetCimSessionComputerName(this._CimSessionComputerName); cimInstance1.SetCimSessionInstanceId(this._CimSessionInstanceID); } } } try { CimMethodResultBase cimMethodStreamedResult = new CimMethodStreamedResult(parameterName, parameterValue, parameterType.ToCimType()); base.ProcessNativeCallback(callbackProcessingContext, cimMethodStreamedResult, true, MiResult.OK, null, null); } finally { if (this._shortenLifetimeOfResults) { CimInstance cimInstance2 = parameterValue as CimInstance; if (cimInstance2 != null) { cimInstance2.Dispose(); } CimInstance[] cimInstanceArray2 = parameterValue as CimInstance[]; if (cimInstanceArray2 != null) { CimInstance[] cimInstanceArray3 = cimInstanceArray2; for (int j = 0; j < (int)cimInstanceArray3.Length; j++) { CimInstance cimInstance3 = cimInstanceArray3[j]; if (cimInstance3 != null) { cimInstance3.Dispose(); } } } } } }
/// <summary> /// Get an ExpandoObject representation of a CimInstance object /// </summary> /// <param name="obj">The object to convert.</param> private static ExpandoObject CimInstanceToExpandoObject(CimInstance obj) { try { ExpandoObject result = new ExpandoObject(); var resultDictionary = (IDictionary <string, object>)result; foreach (var property in obj.CimInstanceProperties.Where(property => property.Value != null)) { resultDictionary[property.Name] = property.Value is CimInstance?CimInstanceToExpandoObject(property.Value as CimInstance) : property.Value.ToString(); } return(result); } finally { obj.Dispose(); } }