using System; using System.Linq; using System.Linq.Expressions; using System.Security.Cryptography.X509Certificates; using AutoMapper; using Mapster; using Microsoft.SharePoint.Client; namespace ProxyInterfaceConsumer.PnP { [ProxyInterfaceGenerator.Proxy(typeof(Microsoft.SharePoint.Client.ClientContext))] public partial interface IClientContext: IClientRuntimeContext { // public virtual void X(); } } namespace ProxyInterfaceConsumer.PnP { public class CustomResolver : IValueResolver { public object Resolve(object source, object destination, object member, ResolutionContext context) { try { return member; } catch (Exception e) { Console.WriteLine(e); throw; } } } public class MyConverter : ITypeConverter { public object Convert(object source, object destination, ResolutionContext context) { return System.Convert.ToDateTime(source); } } public class MyWebConverter : ITypeConverter { public IWeb Convert(Web source, IWeb destination, ResolutionContext context) { return new ProxyInterfaceConsumer.PnP.WebProxy(source); } } public partial class ClientContextProxy { public void Test() { var mapper = new MapperConfiguration(cfg => { //cfg.ForAllMaps((map, expression) => //{ // expression.ForAllMembers(configurationExpression => // configurationExpression.PreCondition((o, o1, arg3) => // { // return true; // }) // ); //}); // CreateMap(); cfg.CreateMap() .ConstructUsing((instance_841809920, context) => { try { var p = new ProxyInterfaceConsumer.PnP.WebProxy(instance_841809920); return p; } catch (Exception e) { Console.WriteLine(e); throw; } }) //.ConvertUsing() .ForAllMembers(opt => { //opt.MapFrom(x =>x , ); //opt.ConvertUsing( x=> x); opt.PreCondition((src, dest, context) => { try { var x = src != null; return true; } catch { return false; } }); opt.MapAtRuntime(); opt.MapFrom(); }) //.ConstructUsing(instance_841809920 => new ProxyInterfaceConsumer.PnP.WebProxy(instance_841809920)) //.ForAllMembers(opt => { // opt.PreCondition((src, dest, context) => // { // try // { // var x = src != null; // return true; // } // catch // { // return false; // } // }); //}) ; //cfg.CreateMap() // .ConstructUsing(proxy1898650104 => ((ProxyInterfaceConsumer.PnP.WebProxy)proxy1898650104)._Instance) // .ForAllMembers(opt => { // opt.PreCondition((src, dest, context) => // { // try // { // var x = src != null; // return true; // } // catch // { // return false; // } // }); // }); }).CreateMapper(); //var web = _mapper.Map(Web); //Load(web, w => w.Lists); TypeAdapterConfig.NewConfig().ConstructUsing(instance_841809920 => new ProxyInterfaceConsumer.PnP.WebProxy(instance_841809920)); TypeAdapterConfig.NewConfig().MapWith(proxy1898650104 => ((ProxyInterfaceConsumer.PnP.WebProxy)proxy1898650104)._Instance); var iweb = _Instance.Web.Adapt(); var web = iweb.Adapt(); //var mapped = mapper.Map(_Instance.Web); Load3(Web, w => w.Lists); } public void LoadOriginal(T clientObject, params System.Linq.Expressions.Expression>[] retrievals) where T : Microsoft.SharePoint.Client.ClientObject { T clientObject_ = clientObject; System.Linq.Expressions.Expression>[] retrievals_ = retrievals; _Instance.Load(clientObject_, retrievals_); } //public void Load2(IClientObject clientObject, params Expression>[] retrievals) //{ // ClientObject clientObject_ = _mapper.Map(clientObject); // Expression>[] retrievals_ = _mapper.Map>[]>(retrievals); // _Instance.Load(clientObject_, retrievals_); //} public void Load3(IWeb clientObject, params System.Linq.Expressions.Expression>[] retrievals) { var clientObject_ = (WebProxy) clientObject; //Expression>[] retrievals_ = _mapper.Map>[]>(retrievals); Load(clientObject_._Instance, null); } } }