Skip to content

robertturner/StaticProxyGenerator

Repository files navigation

StaticProxyGenerator

Interface proxy generator. At compile time creates class that implements target interface. Instantiation of the generated class accepts an InterceptorHandler which is called for all method calls.

Example

public interface IMyIfce
{
  Task<string> AsyncMethod(string arg1);
  Task MethodWithNoReturn(int arg1, string arg2);
  void SyncMethodNoArgs();
}

Create proxy of interface:

object interceptionHandler(object instance, MethodInfo method, object[] args, Type[] genericArguments)
{
    switch (method.Name)
    {
        case nameof(IMyIfce.AsyncMethod): 
            return Task.FromResult((string)args[0]);
        ... 
    }
}

// Get instance of proxy
IMyIfce ifceProxy = ProxyGeneratorHelpers.InstantiateProxy<IMyIfce>(interceptionHandler);

Super happy place:

string result = await ifceProxy.AsyncMethod("an arg");
...
await ifceProxy.MethodWithNoReturn(4, "arg2");
...
ifceProxy.SyncMethodNoArgs();

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages