Example #1
0
        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);