System.Reflection.DispatchProxy 4.8.2
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 |
---|---|
System.Private.ServiceModel
Package Description
|
48 |
Microsoft.NETCore
Provides a set of packages that can be used when building portable libraries on .NETCore based platforms. \r\n TFS ID: 1599443, GitHub SHA: https://github.com/dotnet/corefx/tree/eede273a4dfabcea608621f5e1bbf8ad00584cfb
|
45 |
System.Private.ServiceModel
Package Description
|
45 |
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.
|
42 |
System.Private.ServiceModel
Package Description
|
42 |
System.Private.ServiceModel
Internal implementation package not meant for direct consumption. Please do not reference directly. Provides implementation of System.ServiceModel packages.
|
42 |
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.
|
41 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
eb9bc9205169e4c00d218d03167a564a7429921f
When using NuGet 3.x this package requires at least version 3.4.
|
41 |
System.Private.ServiceModel
Package Description
|
41 |
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.
|
40 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
74b1c703813c8910df5b96f304b0f2b78cdf194d
When using NuGet 3.x this package requires at least version 3.4.
|
40 |
System.Private.ServiceModel
Package Description
|
40 |
System.Private.ServiceModel
Package Description
|
39 |
System.Private.ServiceModel
Internal implementation package not meant for direct consumption. Please do not reference directly. Provides implementation of System.ServiceModel packages.
When using NuGet 3.x this package requires at least version 3.4.
|
39 |
Microsoft.NETCore.App
A set of .NET API's that are included in the default .NET Core application model.
6985b9f6844d51ba1197c3f52aabc7291bb15bc1
When using NuGet 3.x this package requires at least version 3.4.
|
39 |
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.
|
39 |
.NET Framework 4.6.2
- No dependencies.
.NET Core 2.0
- No dependencies.
.NET Standard 2.0
- System.Reflection.Emit (>= 4.7.0)
.NET Standard 2.1
- No dependencies.