private ProxyProvidedType()

in ReSharper.FSharp/src/FSharp/FSharp.TypeProviders.Protocol/src/Models/ProxyProvidedType.cs [40:93]


    private ProxyProvidedType(RdOutOfProcessProvidedType rdProvidedType, IProxyTypeProvider typeProvider,
      TypeProvidersContext typeProvidersContext) : base(null, ProvidedConst.EmptyContext)
    {
      TypeProvider = typeProvider;
      myRdProvidedType = rdProvidedType;
      TypeProvidersContext = typeProvidersContext;

      myGenericArguments = new InterruptibleLazy<ProvidedType[]>(() =>
        TypeProvidersContext.ProvidedTypesCache.GetOrCreateBatch(myRdProvidedType.GenericArguments, TypeProvider));

      myStaticParameters = new InterruptibleLazy<ProvidedParameterInfo[]>(() => typeProvidersContext.Connection
        .ExecuteWithCatch(() => RdProvidedTypeProcessModel.GetStaticParameters.Sync(EntityId, RpcTimeouts.Maximal))
        .Select(t => ProxyProvidedParameterInfo.Create(t, TypeProvider, TypeProvidersContext))
        .ToArray());

      myCustomAttributes = new InterruptibleLazy<RdCustomAttributeData[]>(() =>
        typeProvidersContext.ProvidedCustomAttributeProvider.GetCustomAttributes(this));

      myContent = new InterruptibleLazy<ProvidedTypeContent>(() =>
      {
        var rdProvidedTypeContent = typeProvidersContext.Connection.ExecuteWithCatch(() =>
          RdProvidedTypeProcessModel.GetContent.Sync(EntityId, RpcTimeouts.Maximal));

        var interfaces = TypeProvidersContext.ProvidedTypesCache
          .GetOrCreateBatch(rdProvidedTypeContent.Interfaces, TypeProvider);

        var constructors = rdProvidedTypeContent.Constructors
          .Select(t => ProxyProvidedConstructorInfo.Create(t, TypeProvider, typeProvidersContext))
          .ToArray();

        var methods = rdProvidedTypeContent.Methods
          .Select(t => ProxyProvidedMethodInfo.Create(t, TypeProvider, typeProvidersContext))
          .ToArray();

        var properties = rdProvidedTypeContent.Properties
          .Select(t => ProxyProvidedPropertyInfo.Create(t, TypeProvider, typeProvidersContext))
          .ToArray();

        var fields = rdProvidedTypeContent.Fields
          .Select(t => ProxyProvidedFieldInfo.Create(t, TypeProvider, typeProvidersContext))
          .ToArray();

        var events = rdProvidedTypeContent.Events
          .Select(t => ProxyProvidedEventInfo.Create(t, TypeProvider, typeProvidersContext))
          .ToArray();

        return new ProvidedTypeContent(interfaces, constructors, methods, properties, fields, events);
      });

      myAllNestedTypes = new InterruptibleLazy<ProxyProvidedType[]>(() =>
        typeProvidersContext.ProvidedTypesCache.GetOrCreateBatch(
          typeProvidersContext.Connection.ExecuteWithCatch(() =>
            RdProvidedTypeProcessModel.GetAllNestedTypes.Sync(EntityId, RpcTimeouts.Maximal)), TypeProvider));
    }