public static ProxyProvidedPropertyInfo Create()

in ReSharper.FSharp/src/FSharp/FSharp.TypeProviders.Protocol/src/Models/ProxyProvidedPropertyInfo.cs [47:104]


    public static ProxyProvidedPropertyInfo Create(RdProvidedPropertyInfo propertyInfo, IProxyTypeProvider typeProvider,
      TypeProvidersContext typeProvidersContext) =>
      propertyInfo == null ? null : new ProxyProvidedPropertyInfo(propertyInfo, typeProvider, typeProvidersContext);

    public override string Name => myPropertyInfo.Name;
    public override bool CanRead => myPropertyInfo.CanRead;
    public override bool CanWrite => myPropertyInfo.CanWrite;

    public override ProvidedType DeclaringType =>
      myTypeProvidersContext.ProvidedTypesCache.GetOrCreate(myPropertyInfo.DeclaringType, myTypeProvider);

    public override ProvidedType PropertyType =>
      myTypeProvidersContext.ProvidedTypesCache.GetOrCreate(myPropertyInfo.PropertyType, myTypeProvider);

    public override ProvidedMethodInfo GetGetMethod() => myMethods.Value[0];

    public override ProvidedMethodInfo GetSetMethod() => myMethods.Value[1];

    public override ProvidedParameterInfo[] GetIndexParameters() => myIndexParameters.Value;

    public override
      FSharpOption<Tuple<FSharpList<FSharpOption<object>>, FSharpList<Tuple<string, FSharpOption<object>>>>>
      GetAttributeConstructorArgs(ITypeProvider _, string attribName) =>
      myTypeProvidersContext.ProvidedCustomAttributeProvider.GetAttributeConstructorArgs(myCustomAttributes.Value,
        attribName);

    public override FSharpOption<Tuple<string, int, int>> GetDefinitionLocationAttribute(ITypeProvider _) =>
      myTypeProvidersContext.ProvidedCustomAttributeProvider.GetDefinitionLocationAttribute(myCustomAttributes.Value);

    public override string[] GetXmlDocAttributes(ITypeProvider _) =>
      myXmlDocs ??=
        myTypeProvidersContext.ProvidedCustomAttributeProvider.GetXmlDocAttributes(myCustomAttributes.Value);

    public override bool GetHasTypeProviderEditorHideMethodsAttribute(ITypeProvider _) =>
      myTypeProvidersContext.ProvidedCustomAttributeProvider.GetHasTypeProviderEditorHideMethodsAttribute(
        myCustomAttributes.Value);

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