Как инициализировать stati c поле init-only динамического c типа in. NET Core? - PullRequest
0 голосов
/ 04 февраля 2020

Вызов fieldBuilder.SetValue(...) в настоящее время не поддерживается согласно документации . Рекомендации по документации:

В качестве обходного пути, извлеките FieldInfo, отражая готовый тип, и вызовите SetValue, чтобы установить значение поля.

Это было возможно в . NET Каркас для stati c только для инициализации полей, однако больше не поддерживается в. NET Core .

Как инициализировать stati c только для инициализации поле динамического ввода c введите. NET Core?

Правка (добавлен пример):

var fb = builder.DefineField("foo", typeof(object), FieldAttributes.Static | FieldAttributes.PrivateScope | FieldAttributes.InitOnly);
// fb.SetValue(...) <-- not supported according to the doc

var c = builder.DefineTypeInitializer().GetILGenerator()
// is it possible to pass myInstance directly to type initializer?

var t = builder.CreateType();
var f = t.GetField("foo", BindingFlags.Static | BindingFlags.NonPublic);
f.SetValue(null, myInstance); // <-- not longer works in .NET Core
...