/// <summary> /// TODO: Summary /// </summary> /// <param name="action"></param> /// <param name="args"></param> /// <param name="signature"></param> /// <returns></returns> public Object Invoke(String action, Object[] args, Type[] signature) { if (action == null) { throw new ArgumentNullException("action"); } ManagementOperation operation = (ManagementOperation)info.Operations[action]; if (operation == null) { throw new InvalidOperationException(String.Format("Operation {0} doesn't exists.", action)); } MethodInfo method = resolver.GetMethod(MemberResolver.BuildOperationName(action, signature)); if (method == null) { foreach (MethodInfo met in resolver.Methods) { if (!met.Name.Equals(operation.Name)) { continue; } ParameterInfo[] parameters = met.GetParameters(); if (MemberResolver.Match(parameters, signature)) { method = met; break; } } } if (method == null) { throw new InvalidOperationException(String.Format("Operation {0} doesn't exists for the specified signature.", action)); } return(method.Invoke(instance, args)); }
public CodeGenerationDynamicSupport(Object instance, ManagementInfo info, MemberResolver resolver) { this.info = info; this.instance = instance; this.resolver = resolver; }
public ReflectedDynamicSupport(Object instance, ManagementInfo info, MemberResolver resolver) { this.info = info; this.instance = instance; this.resolver = resolver; }