dotnet/runtime
GitHub で見る[mono] System.Reflection.Emit doesn't propagate marshalling attributes to the created type
Open
#58,783 opened on 2021年9月8日
area-VM-reflection-monohelp wanted
Repository metrics
- Stars
- (17,886 stars)
- PR merge metrics
- (平均マージ 12d 11h) (30d で 661 merged PRs)
説明
See the comment below for a concise repro: https://github.com/dotnet/runtime/issues/58783#issuecomment-915439461
Some values relevant to marshaling from a StructLayoutAttribute and MarshalAsAttribute are not propagated to the dynamically created type.
Original bug report:
I tested it in Xamarin, but dotnet runtime also exists:

The correct size should be 100, which is correct on .net framework but wrong on mono. When I debug this code with mono on win, I found that this error is related to mono’s implementation of DynamicImage, which is caused by the attribute not being successfully applied during marshal.