OutWit.Communication.Client.DynamicProxy 2.4.0

dotnet add package OutWit.Communication.Client.DynamicProxy --version 2.4.0
                    
NuGet\Install-Package OutWit.Communication.Client.DynamicProxy -Version 2.4.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OutWit.Communication.Client.DynamicProxy" Version="2.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OutWit.Communication.Client.DynamicProxy" Version="2.4.0" />
                    
Directory.Packages.props
<PackageReference Include="OutWit.Communication.Client.DynamicProxy" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OutWit.Communication.Client.DynamicProxy --version 2.4.0
                    
#r "nuget: OutWit.Communication.Client.DynamicProxy, 2.4.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OutWit.Communication.Client.DynamicProxy@2.4.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OutWit.Communication.Client.DynamicProxy&version=2.4.0
                    
Install as a Cake Addin
#tool nuget:?package=OutWit.Communication.Client.DynamicProxy&version=2.4.0
                    
Install as a Cake Tool

OutWit.Communication.Client.DynamicProxy

Runtime dynamic proxy support (Castle.Core) for WitRPC clients, enabling client.GetService<TService>() without a source-generated proxy.

Overview

OutWit.Communication.Client.DynamicProxy provides the runtime proxy generation path for the WitRPC client. When you call GetService<TService>() on a WitClient, this package uses Castle DynamicProxy to emit a proxy class for your service interface at runtime, so you can start calling remote methods without any code generation step.

This capability used to live inside the core packages. It was split out so that OutWit.Communication and OutWit.Communication.Client stay free of Castle.Core and publish cleanly under NativeAOT/trimming. The split changes nothing about the wire protocol or server behavior:

  • If your client uses client.GetService<TService>() (no arguments, or the strongAssemblyMatch flag) — add a reference to this package. Your code recompiles unchanged: the extension method keeps the OutWit.Communication.Client namespace.

  • If your client uses the source-generated (static) proxy pathclient.GetService<TService>(interceptor => new MyServiceProxy(interceptor)) with a [ProxyTarget] interface and the OutWit.Common.Proxy.Generator package — you do not need this package. That path stays in the core client and is AOT-compatible.

Note: runtime proxy emission is not available under NativeAOT. For AOT-published clients, use the static proxy path instead.

Installation

Install-Package OutWit.Communication.Client.DynamicProxy

Usage

using OutWit.Communication.Client;

var client = WitClientBuilder.Build(options =>
{
    options.WithWebSocket("ws://localhost:5000/api");
    options.WithEncryption();
    options.WithTimeout(TimeSpan.FromSeconds(5));
});

await client.ConnectAsync(TimeSpan.FromSeconds(5), CancellationToken.None);

// Runtime-generated proxy, courtesy of this package:
IMyService service = client.GetService<IMyService>();

var result = await service.DoWorkAsync("hello");

Set strongAssemblyMatch: false when the client and server load the contract types from differently named assemblies:

IMyService service = client.GetService<IMyService>(strongAssemblyMatch: false);

Learn More

  • WitRPC Documentation
  • Main packages: OutWit.Communication.Client (client core), OutWit.Communication.Server (server side)
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on OutWit.Communication.Client.DynamicProxy:

Package Downloads
OutWit.InterProcess.Host

Provides host-side functionality to launch external processes and connect to them via WitRPC, allowing your application to use out-of-process services as if they were local (handles process startup and client proxy generation).

OutWit.Communication.Client.DependencyInjection

Microsoft.Extensions.DependencyInjection integration for WitRPC client, providing easy registration and lifecycle management of WitRPC client services.

OutWit.Communication.Client.Blazor

Blazor WebAssembly channel factory for WitRPC communication over WebSocket with RSA/AES encryption via the Web Crypto API.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.4.0 56 8/13/2026