UfcppSample
                                
                                 UfcppSample copied to clipboard
                                
                                    UfcppSample copied to clipboard
                            
                            
                            
                        UnsafeAccessor
ブログにでも書く? C# 入門の雑記?
using System.Runtime.CompilerServices;
var p = new Private();
GetValue(p) = 99;
Console.WriteLine(p); // 99
// アクセス制限無視してメンバーにアクセスする手段を用意したらしい。
// 今まではリフレクション(IL Emit)でやりたい放題やってたけども、
// AOT (リフレクションをソースジェネレーターで置き換えたい)で困るからって。
//
// ランタイム側で UnsafeAccessor 属性付きの external メソッドを特別扱い(intrinsic)してる。
[UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_value")]
extern static ref int GetValue(Private x);
class Private
{
    private int _value; // Make field readonly 出っぱなしにはなる。
    public override string ToString() => _value.ToString();
}
基本的には AOT 向け。 シリアライザーで使うのが一番の動機。
単体テストとかにも使えそう。 → すでに neue さんが InternalVisibleTo は広範囲にわたって公開されすぎる感ある。 Visual Studio は昔 internal accessor (中身はリフレクション)とか生成してくれる機能持ってたのに気が付いたら消えてた。