У меня есть следующий тип:
Class Command<TData> : Base Where TData : I
Во время выполнения этот класс является сборкой (с определенным TDATA) и сериализованным.
У меня есть 2 проблемы (я использую V2):
1) Когда я добавляю этот тип в модальное время выполнения:
var meta = this._modal.Add(type, false)
.Add(this.GetDMProperties(type).Select(p => p.Name)
.ToArray());
Я получаю следующее исключение:
Необработанное исключение: System.NullReferenceException: ссылка на объект не установлена в
экземпляр объекта.
в ProtoBuf.Meta.TypeModel.ResolveProxies (Type type) в C: \ Dev \ protobuf-net \ protobuf-net \ Meta \ TypeModel.cs: строка 952
в ProtoBuf.Meta.RuntimeTypeModel.FindWithoutAdd (Type type) в C: \ Dev \ protobuf-net \ protobuf-net \ Meta \ RuntimeTypeModel.cs: строка 118
в ProtoBuf.Meta.ValueMember..ctor (модель RuntimeTypeModel, тип parentType, Int32 fieldNumber, член MemberInfo, тип memberType, тип itemType, тип defaul
tType, DataFormat dataFormat, Object defaultValue) в C: \ Dev \ protobuf-net \ protobuf-net \ Meta \ ValueMember.cs: строка 75
в ProtoBuf.Meta.MetaType.AddField (Int32 fieldNumber, String memberName, Тип itemType, Тип defaultType, Объект defaultValue) в C: \ Dev \ protobuf-net \ protobu
f-net \ Meta \ MetaType.cs: строка 1165
в ProtoBuf.Meta.MetaType.Add (String [] memberNames) в C: \ Dev \ protobuf-net \ protobuf-net \ Meta \ MetaType.cs: строка 1046
2) Если я попытаюсь пропустить его при запуске и попытаться сделать это по требованию, как показано ниже:
if (this._modal.CanSerializeContractType(objectType) == false)
{
this._modal.Add(objectType, false);
this._modal.CompileInPlace();
}
CanSerializeContractType возвращает true, но на практике сериализуются только базовые данные.
У меня вопрос, какова практика добавления этого типа в модальное без добавления всех перестановок во время разработки, если это возможно?