/// <summary> /// Returns the name of the type corresponding to the property's value /// </summary> /// <param name="property">property obtained in a previous GetMember</param> /// <returns>the name of the type corresponding to the member</returns> protected override string ParameterizedPropertyType(PSParameterizedProperty property) { ComProperty prop = (ComProperty)property.adapterData; return(prop.Type.FullName); }
/// <summary> /// Returns true if the property is settable /// </summary> /// <param name="property">property to check</param> /// <returns>true if the property is settable</returns> protected override bool ParameterizedPropertyIsSettable(PSParameterizedProperty property) { ComProperty prop = (ComProperty)property.adapterData; return(prop.IsSettable); }
/// <summary> /// Called after a non null return from GetMember to set the property value. /// </summary> /// <param name="property">The non empty return from GetMember.</param> /// <param name="setValue">The value to set property with.</param> /// <param name="arguments">The arguments to use.</param> protected override void ParameterizedPropertySet(PSParameterizedProperty property, object setValue, object[] arguments) { ComProperty prop = (ComProperty)property.adapterData; prop.SetValue(property.baseObject, setValue, arguments); }
/// <summary> /// Returns the string representation of the property in the object. /// </summary> /// <param name="property">Property obtained in a previous GetMember.</param> /// <returns>The string representation of the property in the object.</returns> protected override string ParameterizedPropertyToString(PSParameterizedProperty property) { ComProperty prop = (ComProperty)property.adapterData; return(prop.ToString()); }
/// <summary> /// Called after a non null return from GetMember to get the property value. /// </summary> /// <param name="property">The non empty return from GetMember.</param> /// <param name="arguments">The arguments to use.</param> /// <returns>The return value for the property.</returns> protected override object ParameterizedPropertyGet(PSParameterizedProperty property, object[] arguments) { ComProperty prop = (ComProperty)property.adapterData; return(prop.GetValue(property.baseObject, arguments)); }
internal static object CallMethod(IScriptExtent errorPosition, object target, string methodName, PSMethodInvocationConstraints invocationConstraints, object[] paramArray, bool callStatic, object valueToSet) { PSMethodInfo staticCLRMember = null; MethodInformation methodInformation = null; object obj2 = null; PSObject obj3 = null; Type type; object obj4; if (LanguagePrimitives.IsNull(target)) { throw InterpreterError.NewInterpreterException(methodName, typeof(RuntimeException), errorPosition, "InvokeMethodOnNull", ParserStrings.InvokeMethodOnNull, new object[0]); } obj2 = PSObject.Base(target); obj3 = PSObject.AsPSObject(target); CallsiteCacheEntryFlags none = CallsiteCacheEntryFlags.None; if (callStatic) { none |= CallsiteCacheEntryFlags.Static; type = (Type)obj2; } else { type = obj2.GetType(); } if (valueToSet != AutomationNull.Value) { none |= CallsiteCacheEntryFlags.ParameterizedSetter; } if (!obj3.isDeserialized) { methodInformation = Adapter.FindCachedMethod(type, methodName, invocationConstraints, paramArray, none); } if (methodInformation == null) { if (callStatic) { staticCLRMember = PSObject.GetStaticCLRMember(target, methodName) as PSMethod; } else { staticCLRMember = obj3.Members[methodName] as PSMethodInfo; } if (staticCLRMember == null) { string fullName = null; if (callStatic) { fullName = type.FullName; } else { fullName = GetTypeFullName(target); } if (valueToSet == AutomationNull.Value) { throw InterpreterError.NewInterpreterException(methodName, typeof(RuntimeException), errorPosition, "MethodNotFound", ParserStrings.MethodNotFound, new object[] { fullName, methodName }); } throw InterpreterError.NewInterpreterException(methodName, typeof(RuntimeException), errorPosition, "ParameterizedPropertyAssignmentFailed", ParserStrings.ParameterizedPropertyAssignmentFailed, new object[] { fullName, methodName }); } } try { if (methodInformation != null) { object[] objArray; PSObject.memberResolution.WriteLine("cache hit, Calling Method: {0}", new object[] { methodInformation.methodDefinition }); if (valueToSet != AutomationNull.Value) { DotNetAdapter.ParameterizedPropertyInvokeSet(methodName, obj2, valueToSet, new MethodInformation[] { methodInformation }, paramArray, false); return(valueToSet); } MethodInformation[] methods = new MethodInformation[] { methodInformation }; Adapter.GetBestMethodAndArguments(methodName, methods, paramArray, out objArray); return(DotNetAdapter.AuxiliaryMethodInvoke(obj2, objArray, methodInformation, paramArray)); } if (valueToSet != AutomationNull.Value) { PSParameterizedProperty property = staticCLRMember as PSParameterizedProperty; if (property == null) { throw InterpreterError.NewInterpreterException(methodName, typeof(RuntimeException), errorPosition, "ParameterizedPropertyAssignmentFailed", ParserStrings.ParameterizedPropertyAssignmentFailed, new object[] { GetTypeFullName(target), methodName }); } property.InvokeSet(valueToSet, paramArray); return(valueToSet); } PSMethod method = staticCLRMember as PSMethod; if (method != null) { return(method.Invoke(invocationConstraints, paramArray)); } obj4 = staticCLRMember.Invoke(paramArray); } catch (MethodInvocationException exception) { if (exception.ErrorRecord.InvocationInfo == null) { exception.ErrorRecord.SetInvocationInfo(new InvocationInfo(null, errorPosition)); } throw; } catch (RuntimeException exception2) { if (exception2.ErrorRecord.InvocationInfo == null) { exception2.ErrorRecord.SetInvocationInfo(new InvocationInfo(null, errorPosition)); } throw; } catch (FlowControlException) { throw; } catch (ScriptCallDepthException) { throw; } catch (Exception exception3) { CommandProcessorBase.CheckForSevereException(exception3); throw InterpreterError.NewInterpreterExceptionByMessage(typeof(RuntimeException), errorPosition, exception3.Message, "MethodInvocationException", exception3); } return(obj4); }
protected override string ParameterizedPropertyToString(PSParameterizedProperty property) { using (ComAdapter.tracer.TraceMethod()) return(((ComProperty)property.adapterData).ToString()); }
protected override bool ParameterizedPropertyIsGettable(PSParameterizedProperty property) { using (ComAdapter.tracer.TraceMethod()) return(((ComProperty)property.adapterData).IsGettable); }
public override PSMemberInfo Copy() { PSParameterizedProperty destiny = new PSParameterizedProperty(base.name, this.adapter, this.baseObject, this.adapterData); base.CloneBaseProperties(destiny); return destiny; }