Combine.DataController.Sdk
3.0.0
dotnet add package Combine.DataController.Sdk --version 3.0.0
NuGet\Install-Package Combine.DataController.Sdk -Version 3.0.0
<PackageReference Include="Combine.DataController.Sdk" Version="3.0.0" />
<PackageVersion Include="Combine.DataController.Sdk" Version="3.0.0" />
<PackageReference Include="Combine.DataController.Sdk" />
paket add Combine.DataController.Sdk --version 3.0.0
#r "nuget: Combine.DataController.Sdk, 3.0.0"
#:package Combine.DataController.Sdk@3.0.0
#addin nuget:?package=Combine.DataController.Sdk&version=3.0.0
#tool nuget:?package=Combine.DataController.Sdk&version=3.0.0
Combine.DataController.Sdk
SDK for building plugins for the Combine.DataController platform.
A plugin is a compiled .NET assembly that exposes one or more tasks. Tasks are invoked by process Tasks at runtime, with their input and output mapped to/from the running process context.
Install
dotnet add package Combine.DataController.Sdk
The package ships with a Roslyn analyzer (DC1001–DC1003) that validates your task and plugin types at compile time.
Minimal task
using Combine.DataController.Sdk;
public sealed class SendEmailInput
{
public string To { get; set; } = "";
public string Subject { get; set; } = "";
public string Body { get; set; } = "";
}
public sealed class SendEmailOutput
{
public bool Success { get; set; }
public string MessageId { get; set; } = "";
}
[Task("Send email")]
public sealed class SendEmailTask : ITask<SendEmailInput, SendEmailOutput>
{
public Task<SendEmailOutput> ExecuteAsync(SendEmailInput input, CancellationToken ct)
{
// ... do the work ...
return Task.FromResult(new SendEmailOutput { Success = true, MessageId = "abc-123" });
}
}
Public surface
| API | Purpose |
|---|---|
ITask<TInput, TOutput> |
The core task contract. Implement and decorate with [Task("display name")]. |
IPlugin |
Optional. Implement to register DI services available to your tasks. |
IPlugin<TOptions> where TOptions : IPluginOptions |
Optional. Same as IPlugin but receives strongly typed options bound from configuration (Plugins:{PluginName} section). |
IPluginOptions |
Marker interface for option classes consumed by IPlugin<TOptions>. |
IModel |
Marker interface for nested data shapes used in TInput/TOutput. Cycles are permitted. |
[Sensitive] |
On a property of an IPluginOptions class: masked in the designer UI and encrypted at rest. |
Supported property types
TInput and TOutput properties (and any IModel they reference) must use one of:
string,int,long,decimal,double,float,bool,Guid,DateTime,DateTimeOffsetSystem.Text.Json.JsonDocumentbyte[](binary blob — JSON-serialised as a base64 string)- A type implementing
IModel - A
Nullable<T>of any of the above - A collection (
ICollection<T>,List<T>,T[]) of any of the above
byte[] is the only allowed byte-based type — bare byte, byte?, and List<byte> are intentionally not supported. Use byte[] for binary data.
Anything else is reported as compile-time error DC1001 by the bundled analyzer.
Analyzer diagnostics
| Id | Severity | Triggered when |
|---|---|---|
DC1001 |
Error | A TInput/TOutput/IModel property uses an unsupported type. |
DC1002 |
Error | An IPlugin implementation lacks an accessible parameterless constructor. |
DC1003 |
Warning | An ITask<,> implementation is missing the [Task] attribute. |
Plugin with options
using Combine.DataController.Sdk;
using Microsoft.Extensions.DependencyInjection;
public sealed class SmtpOptions : IPluginOptions
{
public string Host { get; set; } = "";
public int Port { get; set; } = 587;
[Sensitive]
public string Password { get; set; } = "";
}
public sealed class SmtpPlugin : IPlugin<SmtpOptions>
{
public void Configure(IServiceCollection services, SmtpOptions options)
{
services.AddSingleton(options);
services.AddSingleton<ISmtpClient>(_ => new SmtpClient(options.Host, options.Port));
}
}
The host binds SmtpOptions from the Plugins:Smtp configuration section. Per-task overrides can be applied via OptionMappings in the process element configuration.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- Microsoft.Extensions.AI.Abstractions (>= 10.10.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0 | 66 | 9/29/2026 |
| 3.0.0-beta.48 | 42 | 9/22/2026 |
| 3.0.0-beta.47 | 53 | 9/21/2026 |
| 3.0.0-beta.46 | 62 | 9/8/2026 |
| 3.0.0-beta.45 | 60 | 9/7/2026 |
| 3.0.0-beta.44 | 61 | 9/7/2026 |
| 3.0.0-beta.43 | 58 | 8/31/2026 |
| 3.0.0-beta.41 | 64 | 8/31/2026 |
| 3.0.0-beta.40 | 67 | 8/28/2026 |
| 3.0.0-beta.38 | 76 | 8/25/2026 |
| 3.0.0-beta.37 | 59 | 8/21/2026 |
| 3.0.0-beta.36 | 62 | 8/21/2026 |
| 3.0.0-beta.35 | 62 | 8/19/2026 |
| 3.0.0-beta.34 | 67 | 8/14/2026 |
| 3.0.0-beta.33 | 65 | 8/14/2026 |
| 3.0.0-beta.32 | 72 | 8/12/2026 |
| 3.0.0-beta.31 | 69 | 8/3/2026 |
| 3.0.0-beta.30 | 64 | 8/3/2026 |
| 3.0.0-beta.29 | 61 | 8/3/2026 |
| 3.0.0-beta.28 | 61 | 8/3/2026 |