Exemplo n.º 1
0
        private Dictionary <string, object> GetInvokerBoundParameters(StaticBindingResult bindingResult)
        {
            var dict = bindingResult.BoundParameters.Select(p => Tuple.Create(p.Key, p.Value.ConstantValue)).ToDictionary(i => i.Item1, i => i.Item2);

            var bindingInfo = GetBindingInfo(bindingResult);

            var boundArguments = (IDictionary)bindingInfo.GetInternalProperty("BoundArguments");

            if (summarySensors.Count > 0 && boundArguments.Contains(nameof(Sensor)))
            {
                dict[nameof(Sensor)] = null;
            }

            return(dict);
        }
Exemplo n.º 2
0
        private string GetInvokerParameterSetName(StaticBindingResult bindingResult)
        {
            var bindingInfo = GetBindingInfo(bindingResult);

            var boundParameters  = bindingInfo.GetInternalProperty("BoundParameters").ToIEnumerable().ToArray();
            var parameterSetFlag = (uint)bindingInfo.GetInternalProperty("ValidParameterSetsFlags");

            var parameterSetData = boundParameters[0]
                                   .GetInternalField("value")
                                   .GetInternalProperty("Parameter")
                                   .GetInternalProperty("ParameterSetData")
                                   .ToIEnumerable()
                                   .ToArray();

            var parameterSetFlags = parameterSetData
                                    .Select(p => Tuple.Create(
                                                (string)p.GetPublicProperty("Key"),
                                                (uint)p.GetPublicProperty("Value").GetInternalProperty("ParameterSetFlag")
                                                )).ToArray();

            var selectedSet = parameterSetFlags.First(f => f.Item2 == parameterSetFlag).Item1;

            return(selectedSet);
        }
Exemplo n.º 3
0
 private object GetBindingInfo(StaticBindingResult bindingResult)
 {
     return(bindingResult.PSGetInternalField("_bindingInfo", "bindingInfo", this));
 }