使用 JIT 时,以下类型似乎可以使用 Protobuf-net 进行序列化。我让它在 Windows、Mac 和 Android 上运行。
// Stores a pair of values
[ProtoContract]
public class OneTwo<T>
{
[ProtoMember(1)]
public T One = default(T);
[ProtoMember(2)]
public T Two= default(T);
public OneTwo() { }
public OneTwo(T One, T Two)
{
this.One = One;
this.Two = Two;
}
}
但是现在我正试图让它在 iOS 上运行,因此使用“预编译器”。因为它出错了,我尝试从源代码运行预编译器并发现
IProtoSerializer ser = TryGetCoreSerializer(model, dataFormat, finalType, out wireType, asReference, dynamicType, OverwriteList, true);
当 finalType.DeclaringType 为“OneTwo'1[T]”、finalType.MemberType 为“NestedType”且 finalType.underlyingType 为“{T}”时,在 ValueMember.cs 的第 322 行为此类型返回 null。
我想知道在运行时使用 JIT 创建模型但尝试为 AOT 预编译时失败时,我是否应该期望它可以工作?
如果这确实是可以预料的,那么我最好的解决方法是什么?