コード例 #1
0
        public override async Task <ITriggerData> BindAsync(TTriggerValue value, ValueBindingContext context)
        {
            Dictionary <string, object> bindingData = Hooks.GetBindingData(value);

            TMessage[] arrayRaw = Hooks.BindMultiple(value, context);

            int  len         = arrayRaw.Length;
            Type elementType = _innerBinding.ElementType;

            var arrayUser = Array.CreateInstance(elementType, len);

            for (int i = 0; i < len; i++)
            {
                TMessage item = arrayRaw[i];
                object   obj  = await _innerBinding.ConvertAsync(item, null, context);

                arrayUser.SetValue(obj, i);
            }
            Type arrayType = elementType.MakeArrayType();

            IValueProvider valueProvider = new ConstantValueProvider(arrayUser, arrayType, "???");
            var            triggerData   = new TriggerData(valueProvider, bindingData);

            return(triggerData);
        }