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