Есть кто-то, кто игрался с обходом ограничений на вызов internal методов из чужой сборки не через рефлекшон? Суть - нужно дёргать вот эти методы
https://github.com/dotnet/runtime/blob/master/src/libraries/System.Private.CoreLib/src/Interop/Windows/BCrypt/Interop.BCryptGenRandom.GetRandomBytes.cs#L10 и
https://github.com/dotnet/runtime/blob/master/src/libraries/System.Private.CoreLib/src/Interop/Unix/System.Native/Interop.GetRandomBytes.cs#L17 Они живут в System.Private.CoreLib. Пробовал как в статье
https://www.strathweb.com/2018/10/no-internalvisibleto-no-problem-bypassing-c-visibility-rules-with-roslyn/ - генерируется хреновая сборка, у которой
.class public abstract sealed auto ansi beforefieldinit
Uuid.CoreLib.Internal
extends [System.Private.CoreLib]System.Object
а правильно
.class public abstract sealed auto ansi beforefieldinit
Uuid.CoreLib.Internal
extends [System.Runtime]System.Object
Падает при старте с криками, что не может подгрузить тип для object. В итоге сделал через .ilproj
Вопрос к знатокам - можно ли всё же как-то сделать на C#? В момент когда
CSharpCompilation.Create делаю - вижу, что ObjectType берётся из System.Private.CoreLib, а не из
System.Runtime. Свойство - вот это
https://github.com/dotnet/roslyn/blob/master/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs#L1493Есть варианты получше, чем дёргать internal-методы розлина?