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