add csharpier

This commit is contained in:
Adam Hathcock
2024-05-21 16:34:46 +01:00
parent 1734d5162a
commit e341772cbc
110 changed files with 1096 additions and 656 deletions
@@ -11,9 +11,15 @@ namespace ProxyInterfaceConsumerForPnP.Interfaces;
[SuppressMessage("ReSharper", "InconsistentNaming")]
public partial class ClientContextProxy
{
public Task ExecuteQueryRetryAsync(Interfaces.IClientRuntimeContext clientContext, int retryCount = 10, string? userAgent = null)
public Task ExecuteQueryRetryAsync(
Interfaces.IClientRuntimeContext clientContext,
int retryCount = 10,
string? userAgent = null
)
{
ClientRuntimeContext clientObject_ = Mapster.TypeAdapter.Adapt<ClientRuntimeContext>(clientContext);
ClientRuntimeContext clientObject_ = Mapster.TypeAdapter.Adapt<ClientRuntimeContext>(
clientContext
);
return clientObject_.ExecuteQueryRetryAsync(retryCount, userAgent);
}
@@ -25,17 +31,24 @@ public partial class ClientContextProxy
_Instance.Load<T>(clientObject_, retrievals_);
}
public void Load<TSource, TTarget>(Interfaces.IClientObject clientObject, params Expression<Func<TSource, object>>[] retrievals)
public void Load<TSource, TTarget>(
Interfaces.IClientObject clientObject,
params Expression<Func<TSource, object>>[] retrievals
)
where TSource : Interfaces.IClientObject
where TTarget : ClientObject
{
TTarget clientObject_ = Mapster.TypeAdapter.Adapt<TTarget>(clientObject);
Expression<Func<TTarget, object>>[] retrievals_ = retrievals.Select(MapExpression<TSource, TTarget>).ToArray();
Expression<Func<TTarget, object>>[] retrievals_ = retrievals
.Select(MapExpression<TSource, TTarget>)
.ToArray();
_Instance.Load(clientObject_, retrievals_);
}
private static Expression<Func<TTarget, object>> MapExpression<TSource, TTarget>(Expression<Func<TSource, object>> expression)
private static Expression<Func<TTarget, object>> MapExpression<TSource, TTarget>(
Expression<Func<TSource, object>> expression
)
where TSource : Interfaces.IClientObject
where TTarget : ClientObject
{
@@ -45,20 +58,28 @@ public partial class ClientContextProxy
switch (expression.Body)
{
case MemberExpression memberExpression:
memberAccessExpression = Expression.PropertyOrField(parameterExpression, memberExpression.Member.Name);
memberAccessExpression = Expression.PropertyOrField(
parameterExpression,
memberExpression.Member.Name
);
break;
case UnaryExpression unaryExpression:
var expressionOperand = (MemberExpression)unaryExpression.Operand;
memberAccessExpression = Expression.PropertyOrField(parameterExpression, expressionOperand.Member.Name);
memberAccessExpression = Expression.PropertyOrField(
parameterExpression,
expressionOperand.Member.Name
);
memberAccessExpression = Expression.Convert(memberAccessExpression, typeof(object));
break;
default:
throw new NotSupportedException();
}
return Expression.Lambda<Func<TTarget, object>>(memberAccessExpression, parameterExpression);
return Expression.Lambda<Func<TTarget, object>>(
memberAccessExpression,
parameterExpression
);
}
}
}
@@ -6,9 +6,15 @@ namespace ProxyInterfaceConsumerForPnP.Implementations;
public static class ClientRuntimeContextExtensions
{
public static Task ExecuteQueryRetryAsync(this IClientRuntimeContext clientContext, int retryCount = 10, string? userAgent = null)
public static Task ExecuteQueryRetryAsync(
this IClientRuntimeContext clientContext,
int retryCount = 10,
string? userAgent = null
)
{
ClientRuntimeContext clientObject_ = Mapster.TypeAdapter.Adapt<ClientRuntimeContext>(clientContext);
ClientRuntimeContext clientObject_ = Mapster.TypeAdapter.Adapt<ClientRuntimeContext>(
clientContext
);
return clientObject_.ExecuteQueryRetryAsync(retryCount, userAgent);
}
}
}
@@ -7,8 +7,11 @@ namespace ProxyInterfaceConsumerForPnP.Interfaces
[ProxyInterfaceGenerator.Proxy(typeof(ClientContext))]
public partial interface IClientContext : IClientRuntimeContext
{
void Load<TSource, TTarget>(IClientObject clientObject, params Expression<Func<TSource, object>>[] retrievals)
void Load<TSource, TTarget>(
IClientObject clientObject,
params Expression<Func<TSource, object>>[] retrievals
)
where TSource : IClientObject
where TTarget : ClientObject;
}
}
}
@@ -1,7 +1,5 @@
namespace ProxyInterfaceConsumerForPnP.Interfaces
{
[ProxyInterfaceGenerator.Proxy(typeof(Microsoft.SharePoint.Client.ClientObject))]
public partial interface IClientObject
{
}
}
public partial interface IClientObject { }
}
@@ -1,8 +1,5 @@
namespace ProxyInterfaceConsumerForPnP.Interfaces
{
[ProxyInterfaceGenerator.Proxy(typeof(Microsoft.SharePoint.Client.ClientRuntimeContext))]
public partial interface IClientRuntimeContext
{
}
}
public partial interface IClientRuntimeContext { }
}
@@ -7,4 +7,4 @@
// public partial interface IProxyListCollection: IClientObject, IEnumerable, IQueryable
// {
// }
//}
//}
@@ -5,4 +5,4 @@ namespace ProxyInterfaceConsumerForPnP.Interfaces
{
// public virtual void X();
}
}
}
@@ -1,7 +1,5 @@
namespace ProxyInterfaceConsumerForPnP.Interfaces
{
[ProxyInterfaceGenerator.Proxy(typeof(Microsoft.SharePoint.Client.User))]
public partial interface IUser
{
}
}
public partial interface IUser { }
}
@@ -1,7 +1,5 @@
namespace ProxyInterfaceConsumerForPnP.Interfaces
{
[ProxyInterfaceGenerator.Proxy(typeof(Microsoft.SharePoint.Client.Web))]
public partial interface IWeb: ISecurableObject
{
}
}
public partial interface IWeb : ISecurableObject { }
}
@@ -18,9 +18,12 @@ public class Program
"15b347bf-90a2-4c16-aa76-5a3263476b59",
"Test.pfx",
Environment.GetEnvironmentVariable("Test.pfx_PWD"),
"s7gb6.onmicrosoft.com");
"s7gb6.onmicrosoft.com"
);
using var clientContext = await authManager.GetContextAsync("https://s7gb6.sharepoint.com/sites/Test");
using var clientContext = await authManager.GetContextAsync(
"https://s7gb6.sharepoint.com/sites/Test"
);
clientContext.Load(clientContext.Web, p => p.Title);
await clientContext.ExecuteQueryRetryAsync();
@@ -28,7 +31,12 @@ public class Program
IClientContext cp = new ClientContextProxy(clientContext);
cp.Load<ProxyInterfaceConsumerForPnP.Interfaces.IWeb, Web>(cp.Web, w => w.Lists, w => w.Language, w => w.Author);
cp.Load<ProxyInterfaceConsumerForPnP.Interfaces.IWeb, Web>(
cp.Web,
w => w.Lists,
w => w.Language,
w => w.Author
);
await cp.ExecuteQueryRetryAsync();
@@ -55,4 +63,4 @@ public class Program
Console.WriteLine("Error Message: " + ex.Message);
}
}
}
}