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);