鷲ノ巣

C# とか PowerShell とか。当ブログの記事は(特に公開直後は)頻繁に改定される場合があることをご了承ください。

JsonSerializer のシリアライズ処理を一元的にカスタマイズする

本記事は C# Advent Calendar 2025 シリーズ2の14日目の記事です。
qiita.com

目的

例えば、JsonSerializerシリアライズする際に、特定の型のメンバーだけをシリアライズから除外したい場合はどうすればいいでしょうか。

たとえばこんなクラスがあって、Dataシリアライズするけれども、その中の NonSerializable は除外したいというような場合です。

public sealed record NonSerializable(int Value);
public sealed record Data(int X, NonSerializable NS);
続きを読む

Blue Oak Model License に関する補足

※お断り※
私はライセンスや法的事項の専門家ではありません。
以下の内容の正確性は保証されませんのでご注意ください。

先日、Blue Oak Model License に関する紹介記事を書きました。
tech.blog.aerie.jp

その後いくつかわかったことがありますので補足します。

続きを読む

OSSライセンス、あるいはどんぐりの木の話

※お断り※
私はライセンスや法的事項の専門家ではありません。
以下の内容の正確性は保証されませんのでご注意ください。

皆さん、OSS書いてますか。コントリビュートしてますか。私は(あまり)してません。
ところで、OSSにはライセンスがつきものですよね。どんなライセンスが好きでしょうか。どんなライセンスをお使いでしょうか。
今回はそんなライセンスについての話をしたいと思います。

続きを読む

Enriched Capabilities ライブラリの紹介

年の瀬も迫ってまいりました。
本記事は C# Advent Calendar 2024 の16日目の記事です。

本記事は未完成で鋭意執筆中ではありますが、Advent Calendar に穴を空けたままにしておくのも申し訳ないので、一旦プレビュー版として公開します。
年内には完成させたいと思っています。しばらくお待ちください。

GitHubdotnet/extensions というリポジトリがあります。
ここはかつて、Microsoft.Extensions.DependencyInjection 等に代表される Microsoft.Extensions 系ライブラリのソースコード リポジトリだったのですが、.NET 5.0 の頃に、それらは dotnet/runtimedotnet/aspnetcore といったリポジトリ統合されていきました
その後しばらく廃墟になっていたのですが、2023年にリポジトリを再利用して新しいプロジェクトがスタートしました。

それが Enriched Capabilities です。
README によれば

This repository contains a suite of libraries that provide facilities commonly needed when creating production-ready applications. Initially developed to support high-scale and high-availability services within Microsoft, such as Microsoft Teams, these libraries deliver functionality that can help make applications more efficient, more robust, and more manageable.

https://github.com/dotnet/extensions/blob/v9.0.0/README.md

とのことです。なんか便利そうですね。

去る11月12日に .NET 9 がリリースされました。時を同じくして、このリポジトリからも一連のライブラリが、バージョン 9.0.0 としてリリースされました*1
そこで、正式リリースとなったこれらのライブラリを一挙紹介していきます。

なお、一部のライブラリに関しては、本稿執筆時点で、まだプレビュー リリースに留まっています。それらに関しては、文末に簡単にリストアップするに留めます。

*1:8.0.0 もリリースされていたことに気づいていませんでした

続きを読む