Skip to content

Repository files navigation

DispatchProxyAdvanced NuGet version

Extended version of DispatchProxy with Class proxying and custom states.

Example 1: Interface proxing

interfaceIExampleInterface{intMyProp{get;set;}intMyMethod(inta,intb);}
usingDispatchProxyAdvanced;varproxy1=ProxyFactory.Create<IExampleInterface>((method,args)=>{Console.WriteLine($"Executing method: {method.Name}, with args: {string.Join(", ",args)}");returnargs.FirstOrDefault();});proxy1.MyProp=222;proxy1.MyMethod(20,200);// Console output: // Executing method: set_MyProp, with args: 222// Executing method: MyMethod, with args: 20, 200

Example 2: Class proxing with source instance

classExampleClass{publicvirtualintMyProp{get;set;}publicvirtualintMyMethod(inta,intb)=>a*b;}
varsomeInstance=newExampleClass{MyProp=111};varproxy3=ProxyFactory.CreateSourced(someInstance,(source,method,args)=>{Console.WriteLine($"Executing method: {method.Name}, with args: {string.Join(", ",args)}");returnmethod.Invoke(source,args);});Console.WriteLine($"Property value: {proxy3.MyProp}");Console.WriteLine($"Method result: {proxy3.MyMethod(10,100)}");// Console output: // Executing method: get_MyProp, with args:// Property value: 111// Executing method: MyMethod, with args: 10, 100// Method result: 1000

Example 3: Custom proxy instance state

varproxy4=ProxyFactory.CreateSourced(someInstance,(source,proxy,method,args)=>{// set your custom state to proxy instanceproxy.CustomProxyStateDefinition="ExampleStateValue";Console.WriteLine($"Executing method: {method.Name}");returnmethod.Invoke(source,args);});Console.WriteLine($"Start proxy state: '{((IProxy)proxy4).CustomProxyStateDefinition}'");proxy4.MyMethod(10,100);Console.WriteLine($"Current proxy state: '{((IProxy)proxy4).CustomProxyStateDefinition}'");// Console output: // Start proxy state: ''// Executing method: MyMethod// Current proxy state: 'ExampleStateValue'

Program.cs

Releases

Packages

Used by

Contributors

Languages