Skip to content

快速开始

环境

  • .NET SDK — 库与示例为 .NET 8;生成器仓库 Nuke 使用 .NET 10global.json
  • Git

NuGet 包(预览)

0.1.0-preview4 已发布至 nuget.org8 个元包:Events、RestAPI、SignalR、Mqtt)。每个功能域有两个包(R3 与 System.Reactive):

适用场景
Observables.Events.R3经典 / 路由 CLR 事件 → R3
Observables.Events.Reactive同上 → IObservable<T>
Observables.RestAPI.R3声明式 HTTP → Task + R3 Observable<T>
Observables.RestAPI.Reactive同上 → System.Reactive
Observables.SignalR.R3SignalR 客户端 Hub → R3
Observables.SignalR.Reactive同上 → System.Reactive
Observables.Mqtt.R3MQTT 主题代理 → R3
Observables.Mqtt.Reactive同上 → System.Reactive

预览版仅 打 tag + 推 NuGet创建 GitHub Release。请自行添加 R3System.Reactive

Events(R3)

xml
<PackageReference Include="Observables.Events.R3" Version="0.1.0-preview4" />
<PackageReference Include="R3" Version="1.3.0" />
csharp
using Observables.Events.R3;
using R3;

var source = new ClickSource();
source.Events().Click.Subscribe(_ => Console.WriteLine("Clicked"));

路由 UI 事件(如 Avalonia)已并入 Events;在项目中设置 <ObservableRoutedEvents>true</ObservableRoutedEvents>(见 Events)。

RestAPI(R3)

xml
<PackageReference Include="Observables.RestAPI.R3" Version="0.1.0-preview4" />
<PackageReference Include="R3" Version="1.3.0" />
csharp
using Observables.RestAPI;
using R3;

var api = RestService.For<IMyApi>(httpClient);
User user = await api.GetUserAsync(42);
User reactive = await api.GetUserObservable(7).FirstAsync();

SignalR(R3)

SignalR

xml
<PackageReference Include="Observables.SignalR.R3" Version="0.1.0-preview4" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.8" />
<PackageReference Include="R3" Version="1.3.0" />
csharp
using Observables.SignalR;
using R3;

var hub = HubService.For<IMyHub>(hubConnection);

Mqtt(R3)

Mqtt

xml
<PackageReference Include="Observables.Mqtt.R3" Version="0.1.0-preview4" />
<PackageReference Include="MQTTnet" Version="4.3.7.1207" />
<PackageReference Include="R3" Version="1.3.0" />

请固定 MQTTnet 4.x(勿用 5.x),说明见 Mqtt — 为何使用 MQTTnet 4.x

csharp
using Observables.Mqtt;
using R3;

var topics = MqttService.For<IMyTopics>(mqttClient);

并列克隆(可选)

开发生成器时可并列放置:

Skymly/
  Observables/
  Observables.Samples/
  Observables.Docs/

Observables.Samples 默认用 NuGet;存在 ../Observables 时可用 -p:UseLocalObservables=true

构建生成器解决方案

powershell
cd Observables
dotnet build Observables.slnx

本地预览文档

bash
cd Observables.Docs
npm install
npm run docs:dev

基于 MIT 许可证发布。