System.Reflection.DispatchProxy 4.8.0
About
Provides a DispatchProxy
class to dynamically create proxy instances that implement a specified interface.
Key Features
Method invocations on a generated proxy instance are dispatched to a Invoke()
method. Having a single invoke method allows centralized handling for scenarios such as logging, error handling and caching.
How to Use
Create the proxy class that derives from DispatchProxy
, override Invoke()
and call one of the static DispatchProxy.Create()
methods to generate the proxy type.
The example below intercepts calls to the ICallMe
interface and logs them.
class Program
{
static void Main(string[] args)
{
ICallMe proxy = LoggingDispatchProxy.Create<ICallMe>(new MyClass());
proxy.CallMe("Hello!");
}
}
public interface ICallMe
{
void CallMe(string name);
}
public class MyClass : ICallMe
{
public void CallMe(string message)
{
Console.WriteLine($"Inside the called method with input '{message}'");
}
}
public class LoggingDispatchProxy : DispatchProxy
{
private ICallMe _target;
protected override object Invoke(MethodInfo targetMethod, object[] args)
{
Console.WriteLine($"Calling method: '{targetMethod.Name}' with arguments: '{string.Join(", ", args)}'");
object result = targetMethod.Invoke(_target, args);
Console.WriteLine($"Called method: '{targetMethod.Name}'.");
return result;
}
public static T Create<T>(T target) where T : class
{
LoggingDispatchProxy proxy = DispatchProxy.Create<T, LoggingDispatchProxy>() as LoggingDispatchProxy;
proxy._target = (ICallMe)target;
return proxy as T;
}
}
Main Types
The main types provided by this library are:
- System.Reflection.DispatchProxy
Additional Documentation
- API reference can be found in: https://learn.microsoft.com/en-us/dotnet/api/system.reflection.dispatchproxy
License
System.Reflection.DispatchProxy is released as open source under the MIT license.
Showing the top 20 packages that depend on System.Reflection.DispatchProxy.
Packages | Downloads |
---|---|
Microsoft.NETCore
Provides a set of packages that can be used when building portable libraries on .NETCore based platforms.
|
1 |
Microsoft.NETCore
Provides a set of packages that can be used when building portable libraries on .NETCore based platforms. - 1548494
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
17373eb129b3b05aa18ece963f8795d65ef8ea54
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
1de04a1a6334f48f5d2ade2c7c441a1894af75e3
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
209f8aa25c26bad137112523118aea6fe862b6c7
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
612cb8b183c52dff0a7f2e57cbfb58e2f18938cc
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
6c78987f00555bdc18c7c11b67368e82309e7e2e
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
7b9c946f574dc8c2831a7d1bc29fb7832b4de528
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
7b9e4ef7c114f04a1baf0143fad29c984364a5f5
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
ba3b934aa42697c3faaebfaa1622cdea2f10ff75
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
bb155063c5d3787c70d8f4de4088c7f0f0ef719c
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
ccea2e606d948094cf861b81e15245833bfb7006
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
When using NuGet 3.x this package requires at least version 3.4.
|
1 |
System.ServiceModel.Primitives
Provides the common types used by all of the WCF libraries.
|
1 |
.NET Framework 4.6.2
- No dependencies.
.NET Core 3.1
- No dependencies.
.NET Standard 2.0
- System.Reflection.Emit (>= 4.7.0)
.NET Standard 2.1
- No dependencies.