private RdProvidedMethodInfo[] GetMethodsInfos() { if (myPropertyInfo.GetMethod != 0 && myPropertyInfo.SetMethod != 0) { return(myTypeProvidersContext.Connection.ExecuteWithCatch(() => myTypeProvidersContext.Connection.ProtocolModel.RdProvidedMethodInfoProcessModel.GetProvidedMethodInfos .Sync(new[] { myPropertyInfo.GetMethod, myPropertyInfo.SetMethod }, RpcTimeouts.Maximal))); } var infos = new RdProvidedMethodInfo[2]; if (myPropertyInfo.GetMethod != 0) { infos[0] = myTypeProvidersContext.Connection.ExecuteWithCatch(() => myTypeProvidersContext.Connection.ProtocolModel.RdProvidedMethodInfoProcessModel.GetProvidedMethodInfo .Sync(myPropertyInfo.GetMethod, RpcTimeouts.Maximal)); } else if (myPropertyInfo.SetMethod != 0) { infos[1] = myTypeProvidersContext.Connection.ExecuteWithCatch(() => myTypeProvidersContext.Connection.ProtocolModel.RdProvidedMethodInfoProcessModel.GetProvidedMethodInfo .Sync(myPropertyInfo.SetMethod, RpcTimeouts.Maximal)); } return(infos); }
private ProxyProvidedMethodInfo(RdProvidedMethodInfo methodInfo, int typeProviderId, TypeProvidersContext typeProvidersContext, ProvidedTypeContextHolder context) : base(null, context.Context) { myMethodInfo = methodInfo; myTypeProviderId = typeProviderId; myTypeProvidersContext = typeProvidersContext; myContext = context; myParameters = new InterruptibleLazy <ProvidedParameterInfo[]>( // ReSharper disable once CoVariantArrayConversion () => myTypeProvidersContext.Connection .ExecuteWithCatch(() => RdProvidedMethodInfoProcessModel.GetParameters.Sync(EntityId)) .Select(t => ProxyProvidedParameterInfo.Create(t, myTypeProviderId, typeProvidersContext, context)) .ToArray()); myStaticParameters = new InterruptibleLazy <ProvidedParameterInfo[]>( // ReSharper disable once CoVariantArrayConversion () => myTypeProvidersContext.Connection .ExecuteWithCatch(() => RdProvidedMethodInfoProcessModel.GetStaticParametersForMethod.Sync(EntityId)) .Select(t => ProxyProvidedParameterInfo.Create(t, myTypeProviderId, typeProvidersContext, context)) .ToArray()); myGenericArguments = new InterruptibleLazy <ProvidedType[]>(() => myTypeProvidersContext.ProvidedTypesCache.GetOrCreateBatch(methodInfo.GenericArguments, myTypeProviderId, context)); myTypes = new InterruptibleLazy <ProvidedType[]>(() => myTypeProvidersContext.ProvidedTypesCache.GetOrCreateBatch( new[] { methodInfo.DeclaringType, methodInfo.ReturnType }, myTypeProviderId, context)); myCustomAttributes = new InterruptibleLazy <RdCustomAttributeData[]>(() => myTypeProvidersContext.ProvidedCustomAttributeProvider.GetCustomAttributes(this)); }
public static ProxyProvidedMethodInfo Create(RdProvidedMethodInfo methodInfo, int typeProviderId, TypeProvidersContext typeProvidersContext, ProvidedTypeContextHolder context) => methodInfo == null ? null : new ProxyProvidedMethodInfo(methodInfo, typeProviderId, typeProvidersContext, context);