private ProxyProvidedEventInfo(RdProvidedEventInfo eventInfo, int typeProviderId,
                                       TypeProvidersContext typeProvidersContext,
                                       ProvidedTypeContextHolder context) : base(null, context.Context)
        {
            myEventInfo            = eventInfo;
            myTypeProvidersContext = typeProvidersContext;

            myMethods = new InterruptibleLazy <ProvidedMethodInfo[]>(() =>
                                                                     // ReSharper disable once CoVariantArrayConversion
                                                                     myTypeProvidersContext.Connection.ExecuteWithCatch(() =>
                                                                                                                        typeProvidersContext.Connection.ProtocolModel.RdProvidedMethodInfoProcessModel.GetProvidedMethodInfos
                                                                                                                        .Sync(new[] { eventInfo.AddMethod, eventInfo.RemoveMethod }, RpcTimeouts.Maximal)
                                                                                                                        .Select(t => ProxyProvidedMethodInfo.Create(t, typeProviderId, typeProvidersContext, context))
                                                                                                                        .ToArray()));

            myTypes = new InterruptibleLazy <ProvidedType[]>(() =>
                                                             myTypeProvidersContext.ProvidedTypesCache.GetOrCreateBatch(
                                                                 new[] { eventInfo.DeclaringType, eventInfo.EventHandlerType }, typeProviderId, context));
        }
 public static ProxyProvidedEventInfo Create(RdProvidedEventInfo eventInfo, int typeProviderId,
                                             TypeProvidersContext typeProvidersContext, ProvidedTypeContextHolder context) =>
 eventInfo == null
 ? null
 : new ProxyProvidedEventInfo(eventInfo, typeProviderId, typeProvidersContext, context);