add csharpier
This commit is contained in:
@@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9
-3
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user