System.Security.Cryptography.Oid は機能的に初期化専用

ASN.1 オブジェクト識別子の値とその "わかりやすい" 名前を表すために使用される System.Security.Cryptography.Oid クラスは、以前は完全に変更可能でした。 この変更可能性は意外にも見落とされがちでした。 割り当てられた後に値を変更しようとすると、プロパティの setter で PlatformNotSupportedException がスローされるようになりました。

変更の説明

以前のバージョンでは、Oid のプロパティの setter を使用して、FriendlyName および Value プロパティの値を変更できます。

.NET 5 以降のバージョンでは、プロパティの setter は値の初期化にのみ使用できます。 プロパティにコンストラクターから、あるいはプロパティの setter の前の呼び出しからの値が設定されると、プロパティの setter で常に PlatformNotSupportedException がスローされます。

変更理由

この変更により、パブリック API で戻り値の一部として Oid オブジェクトを再利用し、オブジェクト割り当てプロファイルを減らせるようになります。 Oid 値が入力として使用されるときに、一時的な "防御用" コピーを作成する必要がなくなります。

導入されたバージョン

5.0

オブジェクトの初期化以外に、Oid プロパティの setter を使用しないようにしてください。 新しい値を表す場合は、既存のオブジェクトの値を変更するのではなく、新しいインスタンスを使用します。

影響を受ける API